Java数组和外部文件

Java数组和外部文件,java,arrays,Java,Arrays,我在开始教授给我的课程时遇到了一些麻烦。以下是提示和示例输出: 将20对数字(分别为ID号和分数)读入两个单独的数组。找出平均分。打印一张如下所示的表格,列出每个学生的ID、分数和差异(分数-平均值),每行一名学生。如图所示,在表格顶部打印分数的总和、平均值和计数。将平均值和差值四舍五入到小数点后2位 输出: End of reading from file. Sum = 4853 Average = 242.65 Count = 20 Id Scor

我在开始教授给我的课程时遇到了一些麻烦。以下是提示和示例输出:

将20对数字(分别为ID号和分数)读入两个单独的数组。找出平均分。打印一张如下所示的表格,列出每个学生的ID、分数和差异(分数-平均值),每行一名学生。如图所示,在表格顶部打印分数的总和、平均值和计数。将平均值和差值四舍五入到小数点后2位

输出:

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位。”