问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

这是一个关于DR.JAVA编程的一个问题 会的人帮我一下谢谢了

发布网友 发布时间:2024-04-03 21:42

我来回答

2个回答

热心网友 时间:2024-07-25 06:35

加拿大。。。奥运会都没结束就这么急着开学的么。。。
题目没说输出到这里,我现在都打印在控制台上了。另外,你们老师说的TextIO我不知道是什么,我只是用常规的方法打开文件选择对话框

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;

public class Test {

public static void main(String[] args) {
Scanner scanner = null;
try {
File file = readUserSelectedFile();
if (file == null) return;
scanner = new Scanner(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
return;
}

final int examNumber = 5;
int studentsNumber = scanner.nextInt();
int[] fullMark = new int[examNumber];
double[] ratios = new double[examNumber];
getNumbers(fullMark, scanner);
getNumbers(ratios, scanner);
for (int i = 0; i < examNumber; ++i) {
ratios[i] = ratios[i] * 1000 / fullMark[i];
}

int id, maxScoreID = -1, realScore, maxScore = -1;
int[] scores = new int[examNumber];
double score;

processOutputHeader();
for (int i = 0; i < studentsNumber; ++i) {
id = scanner.nextInt();
getNumbers(scores, scanner);
score = 0;
for (int j = 0; j < examNumber; ++j)
score += ratios[j] * scores[j];

realScore = processScore(id, score);

if (realScore > maxScore) {
maxScore = realScore;
maxScoreID = id;
}

}

System.out.printf("The best student is: %d with a mark of %s\n",
maxScoreID, parseScore(maxScore));

}

static String parseScore(int score) {
return (score / 10) + "." + (score % 10);
}

static void processOutputHeader() {
System.out.println("ID Nbr\tMark");
}

/*
* Since we need only one decimal, the full mark is considered to be 1000
* instead of 100 to eliminate the inaccuracy of floating point arithmetic.
* Otherwise, we might get a score of, say, 79.99. This score, through
* comparison with decimal literal 80, would be considered to be less than
* 80 and thus gets only one "+". However, it might be rounded to 80.0
* when displayed, which causes inconsistency.
*/
static int processScore(int id, double score) {
System.out.printf("%d\t", id);
int realScore = (int) Math.round(score);
int integer = realScore / 10, decimal = realScore % 10;
System.out.printf("%d.%d", integer, decimal);

if (integer >= 90) {
System.out.println("+++");
} else if (integer >= 80) {
System.out.println("++");
} else if (integer >= 70) {
System.out.println("+");
} else {
System.out.println();
}
return realScore;
}

static void getNumbers(int[] array, Scanner scanner) {
for (int i = 0; i < array.length; ++i)
array[i] = scanner.nextInt();
}

static void getNumbers(double[] array, Scanner scanner) {
for (int i = 0; i < array.length; ++i)
array[i] = scanner.nextDouble();
}

static File readUserSelectedFile() {
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setFileFilter(new FileNameExtensionFilter(null, "txt"));
chooser.setMultiSelectionEnabled(false);

chooser.showOpenDialog(null);
return chooser.getSelectedFile();
}

}

热心网友 时间:2024-07-25 06:37

你学计算机的话还是多动手吧!
引入下面这个包读取TEXT文档:
import java.util.TreeSet;
估计处理这些数字要用到正则表达式,
把数据用数组分别储存起来,
楼上这位已经给出了数据的计算方法了。
题目大意是:
编写一个JAVA程序:从一个数据文档中读取每个学生的得分信息,并且计算出最终成绩。该程序应该使用TextIO.readUserSelectedFile()方法从标准对话框中选择录入文件。文档中每一行包含一名学生的三项作业得分,一项测试得分,一项考试得分。

输入文件的格式如下:
文档的第一行包含一个表示该学生的代号;
第二行包含每项的满分标准;
第三行包含每项成绩的比重权值;
第四行及后面的所有行表示学生的各项对应成绩。
举例如下:
Here is the content of a sample input file:4
10 15 10 40 85
.1 .1 .1 .2 .5
902345 6 12 7 32 68
921147 7 11 8 29 71
993452 7 7 9 24 59
905466 8 13 8 34 74

在这个表中成绩计算方法是:
915466 (8/10*0.1+13/15*0.1+8/10*0.1+34/40*0.2+74/85*0.5)*100=85.2
输入要求计算出每个学生的最终成绩。90分以上的后面显示“+++”,80-90的显示“++”,70-80的显示“+”。程序末尾要说明最高成绩的学生的代号及其分值。
例如:
Id Nbr Mark
902345 77.0 +
921147 78.6 +
993452 67.4
905466 85.2 ++
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
小篇幅造句 易车如何发布二手车 转让卖车信息流程 《易车》群聊消息关闭方法 易车消息夜间勿扰方法步骤 易车如何开启消息夜间勿扰 易车 开启@消息推送 ...当入射角是 时,反射角是 。我们能从各个方向看到本身不发光的物体... 发泄的近义词和反义词是什么_发泄是什么意思? 我的世界手游 我的世界手机版怎么做末地传送门? 我的世界手游 末地传送门怎么做? 安全评价师的报考科目有什么 The full mark of Chinese,Mathematics and English are 150.The full... Full Marks Lost 用hao123浏览器打开网页,插入的广告太多了,几乎看不成,怎么办 纯电动汽车使用多年后驱动电磁会不会减弱? 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... ...号在最近24小时内绑定过三个,已达到限制,...24小时后可以再次... 手机号绑定了达到限制不能绑定其他是什么意思? 汤泡饭容易长胖吗?? 晚上吃点汤泡饭会不会长胖 手机号1 24 手机号24小时内绑定了两个被限制 请问什么时候才能重 ... 长沙这座城市有什么独特之处? 苹果6s抬起唤醒没反应怎么办啊? ...它和无线电波微波红外线紫外线一样都属于电磁辐射吗 沈阳图书馆志愿者有工资吗 广州图书馆志愿者有工资吗 南京金陵图书馆志愿者有工资吗 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 轩源牌摩托车是杂牌子吗 湖南轩源环保科技有限公司怎么样 轩源摩托车是正品吗? 手机软件,音频,视频,系统连着微信QQ什么全部加起来也就23个G,但是为什 ... 如果被人打还手至她重伤犯法吗 福建的特色小吃福建的特色小吃有哪些 国宴有哪些菜关于国宴的菜品介绍 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 初一女生喜欢初三男生家长该如何引导、才能让孩子懂。 三个月大婴儿老是举着手是怎么回事 两个多月的婴儿为什么喜欢举起手睡觉? 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... ...我想知道他们有没有给我加固态硬盘了没,在那里可以查看 阑尾炎手术后要多久能快走 以莛叩钟什么意思? 全红婵实现大满贯了吗 中宁县渠口农场属于哪个镇 我的电脑系统是正版WIN7家庭普通版64位的,如何安装Solidworks2010,是否... 求助!64位系统不能安装64位SOLIDWORKS2010! 手机号1 24 手机号24小时内绑定了两个被限制 请问什么时候才能重 ... ...号在最近24小时内绑定过三个,已达到限制,...24小时后可以再次... 开锅的正确方法小妙招新不锈钢锅的开锅方法介绍 不锈钢锅怎么开锅最简单方法