Java 使用System.out.printf和数组显示成绩表

Java 使用System.out.printf和数组显示成绩表,java,arrays,Java,Arrays,我正在努力完成我的程序,我正在寻求帮助。我应该能够输出一个包含我的学生姓名、所有考试成绩、测验成绩、家庭作业成绩和最终平均成绩的表格。我很难弄清楚如何使用System.out.printf正确格式化表格。现在我遇到了一个问题,我不知道如何循环我的数组,所以它们会不断打印出多达200个学生的姓名和成绩 我试着通过做3个独立的学生成绩来说明这一点,但我遇到了一个问题,即我所有的考试、测验和硬件数组都不能解析为一个变量。这让我很困惑,因为我已经将它们从字符串更改为双精度。如果有帮助的话,这里是我用来尝

我正在努力完成我的程序,我正在寻求帮助。我应该能够输出一个包含我的学生姓名、所有考试成绩、测验成绩、家庭作业成绩和最终平均成绩的表格。我很难弄清楚如何使用System.out.printf正确格式化表格。现在我遇到了一个问题,我不知道如何循环我的数组,所以它们会不断打印出多达200个学生的姓名和成绩

我试着通过做3个独立的学生成绩来说明这一点,但我遇到了一个问题,即我所有的考试、测验和硬件数组都不能解析为一个变量。这让我很困惑,因为我已经将它们从字符串更改为双精度。如果有帮助的话,这里是我用来尝试将输入切换为双倍的代码

// declare Double[] exams using length numExams
                    Double[] exams = new Double[numExams];
                    // iterates through Array exams and adds values from allInfo
                    for (int k = 0; k < exams.length; k++) {
                        exams[k] = Double.parseDouble(allInfo.get(1 + k)
                                .substring(1));

                        // prints out (delete this when you finish program)
                        //System.out.print(exams[k] + "\t");
                    }

                    //System.out.println(" ");

                    // declare Double[] quizzes using length numQuizzes
                    Double[] quizzes = new Double[numQuizzes];
                    // iterates through Array quizzes and adds values from
                    // allInfo
                    for (int k = 0; k < quizzes.length; k++) {
                        quizzes[k] = Double.parseDouble(allInfo.get(
                                1 + numExams + k).substring(1));

                        // prints out (delete this when you finish program)
                        //System.out.print(quizzes[k] + "\t");
                    }

                    //System.out.println(" ");

                    // declare Double[] HW using length numHW
                    Double[] hw = new Double[numHW];
                    // iterates through Array hw and adds values from allInfo
                    for (int k = 0; k < hw.length; k++) {
                        hw[k] = Double.parseDouble(allInfo.get(
                                1 + numExams + numQuizzes + k).substring(1));

最好的方法是使用POJA。创建一个包含所有必填字段的Sudent POJO。然后创建一个Student对象数组并遍历它。但是对于您当前的代码,请使用以下解决方案

维护所有4个数组的索引(即学生姓名、我的所有考试成绩、测验成绩、家庭作业成绩)

int studentNameIndex=0;
int examGradeIndex=0;
int-quizGradeIndex=0;
int homeworkGradeIndex=0;
int-gradeAverageIndex=0;
System.out.println(“显示学生成绩和统计数据”);
//我的成绩表标题的格式设置
System.out.printf(“%-10s”,“Name”);
System.out.printf(“%-5s”,“检查”);
System.out.printf(“%-5s”,“检查”);
System.out.printf(“%-5s”,“检查”);
System.out.printf(“%-5s”,“测验”);
System.out.printf(“%-5s”,“测验”);
System.out.printf(“%-5s”,“测验”);
系统输出打印F(“%-7s”,“硬件”);
系统输出打印F(“%-7s”,“硬件”);
系统输出打印F(“%-7s”,“硬件”);
System.out.printf(“%-5s”,“Grade\n”);
for(int index=0;index
问题在于行中的
“\n”

System.out.printf("%-5.1f",gradeAverage[2] + "\n");
取代

System.out.printf("%-5.1f \n",gradeAverage[1]);
还是用这个

System.out.printf("%-5.1f",gradeAverage[2]);
System.out.printf("\n");

非常感谢你!这比我做的容易多了。我还有一个问题。你将如何计算你的平均成绩,然后进行加权平均成绩?数组把我搞得一团糟,很难获得考试、测验和家庭作业的平均成绩,然后再获得加权平均成绩。使用POJO计算平均成绩时不会出现任何混乱。为了正确回答你的问题,请告诉我你加权分数的公式。
System.out.printf("%-5.1f \n",gradeAverage[1]);
System.out.printf("%-5.1f",gradeAverage[2]);
System.out.printf("\n");