Java数组和外部文件
我在开始教授给我的课程时遇到了一些麻烦。以下是提示和示例输出: 将20对数字(分别为ID号和分数)读入两个单独的数组。找出平均分。打印一张如下所示的表格,列出每个学生的ID、分数和差异(分数-平均值),每行一名学生。如图所示,在表格顶部打印分数的总和、平均值和计数。将平均值和差值四舍五入到小数点后2位 输出:Java数组和外部文件,java,arrays,Java,Arrays,我在开始教授给我的课程时遇到了一些麻烦。以下是提示和示例输出: 将20对数字(分别为ID号和分数)读入两个单独的数组。找出平均分。打印一张如下所示的表格,列出每个学生的ID、分数和差异(分数-平均值),每行一名学生。如图所示,在表格顶部打印分数的总和、平均值和计数。将平均值和差值四舍五入到小数点后2位 输出: End of reading from file. Sum = 4853 Average = 242.65 Count = 20 Id Scor
End of reading from file.
Sum = 4853
Average = 242.65 Count = 20
Id Score Diff
115 257 14.35
123 253 10.35
116 246 3.35
113 243 0.35
112 239 -3.65
104 239 -3.65
110 238 -4.65
218 243 0.35
208 242 -0.65
222 223 -19.65
223 230 -12.65
213 229 -13.65
207 228 -14.65
203 224 -18.65
305 265 22.35
306 262 19.35
311 256 13.35
325 246 3.35
321 245 2.35
323 245 2.35
我现在的主要问题是如何将ID和分数分成两个独立的数组。我用电脑读文件
Scanner kbReader = new File("C:\\\Users\\\Guest\\\Documents\\\java programs\\\Prog590b\\\Prog590b.in");
但我找不到一种方法将它们排序到数组中。我不是要求任何人编写我的全部代码,而是帮助我找出如何像提示符所要求的那样将它们排序到数组中。是否有人能提供一些指导/反馈,说明我如何做到这一点?谢谢。首先逐行阅读ID和分数,并将它们放在两个单独的列表中(一个用于ID,一个用于分数)。当您实现这一点时,剩下的应该是显而易见的。在数组中插入值 我建议您首先将前几个数字(ID)放在一个数组中,假设它们的位数相同。 这应该很简单:只需在string类中使用substring函数 现在,对于分数,你应该沿着这条线一直走,直到在分数后找到一个空格。然后取它的子串;从起始索引到最终索引(您必须对此进行计数) 对数组进行排序 有许多方法可以对数组、列表、链表等进行排序。 我建议您在线搜索算法,并尝试跟踪代码,以了解每行代码的含义以及它如何对数组排序if语句应在此处工作: 如果您不太关心效率,我建议您查看选择排序或插入排序!一旦了解了数据和算法的工作原理,就可以很容易地根据ID或分数进行排序了!:) 选择排序:
希望有帮助。:) 首先,您的扫描仪被宣布为错误。 你需要这样做
Scanner kbReader = new Scanner(new File("C:\\Users\\Guest\\Documents\\java programs\\Prog590b\\Prog590b.in"));
接下来,如果文件是ID Score{newline},依此类推
您需要使用split函数
while(kbReader.hasNext()){
String line = kbReader.nextLine();
String splitLine = line.split(" ");
ArrayID.add(splitLine[0]);
ArrayScore.add(splitLine[1]);
}
请发布你的非工作代码为什么教授们总是坚持用艰苦的方式来做?…我想这里面有一个宝贵的教训。提供你的Prog590b。在文件结构中如果对OP如此明显,我怀疑他们会发布这个问题。。。也许你可以猜到,搜索一行一行地读取文件的可能性并不过分。我没有读到这样的内容:“将20对数字(分别为ID号和分数)读入两个单独的数组。找到平均分数。打印一个如下所示的ID、分数和差异(分数-平均值)表。”对于每个学生,每行一名学生。如图所示,在表格顶部打印分数的总和、平均值和计数。将平均值和差值四舍五入到小数点后2位。”