【问题标题】:multidimensional arrays and methods多维数组和方法
【发布时间】:2015-06-03 11:08:31
【问题描述】:

我有一个家庭作业,程序会生成随机数量的学生参加随机数量的测试。用户必须输入学生姓名和考试成绩。完成后,程序将在屏幕上打印: 学生报告 Fred 的分数: 测试#1:78 测试#2:80 弗雷德平均:79.0 苏的分数: 测试#1:91 测试#2:94 苏平均:92.5

...等等,具体取决于您获得的学生数量和测试数量。

我把一切都做好了,直到平均部分我该如何解决它?

这是我的代码:

   public static void populateNames(String[] names)
   {
     for(int i = 0; i<names.length; i++)
     {
       out.print("Enter student " + (i+1) + " name: ");
       names[i] = keyboard.next();
     }
   } 

  // Code your 3 methods below...
 //Ask the user for the student name as well as the test scores
   public static void populateTestScores(String[] names, int[][] scores)
   {
     out.println();
     for(int i=0; i<names.length; i++)
     {
        out.println();
        out.println("Entering scores for: " + names[i]);

        for(int s=0; s<scores[0].length; s++)
        {
            out.print("Enter score for test #" + (s+1) + ": ");
            scores[i][s] = keyboard.nextInt();
        }
    }
    out.println();
}

  //Print each studdent test scores and ther average
  public static void printStudentReport(String[] names, int[][] scores)
  {
    out.println("STUDENT REPORT");
    for(int i=0; i<names.length; i++)
    {
        out.print("Scores for " + names[i] + ": ");
        out.println();

        for(int s=0; s<scores[0].length; s++)
        {
            out.println("Test #" + (s + 1) +  ": " + scores[i][s]);
        }
        out.println();
    int s=0;
    if(s<scores[0].length)
    {
        s++;
        double sum = 0;
        sum += scores[i][s];
        double average = sum / scores[0].length;
        out.println("Average for " + names[i] + ": " + average);
        out.println();
    }
    }
    out.println();
  }

【问题讨论】:

  • 它做了什么不想要的,你到底想让它做什么?请阅读stackoverflow.com/help/mcve
  • 对不起。它没有给我正确的平均值,它还打印了 Fred 的 STUDENT REPORT 分数:测试 1:89 平均 43 测试 2:平均 32 苏分数:测试 1:90 平均 40 测试 2:90 平均 50 等等它打印每个考试成绩的平均值。所以它会在 STUDENT REPORT 之后的每一行打印平均值,我只想在这个循环结束之前在最后一行打印 - for(int i=0; i
  • 我刚刚更正了我的代码。平均值不断返回不正确,所以我不知道它是否与我的计算或其他问题有关,请帮忙。我需要在 2 天内完成这项工作
  • 问题不清楚。预期的输出真的是一长行文本吗?请编辑问题以清楚地显示预期输出并显示实际输出。您在这里向人们寻求帮助以解决您的问题,请让我们在不做大量工作的情况下轻松理解您的需求。如果您的问题确实很紧急,请方便我们快速理解。
  • 添加您的输出。不清楚您对输出的期望。

标签: java methods multidimensional-array


【解决方案1】:

问题在于您在printStudentReport 中计算sum 的方式:它仅包含分数列表中的第二个元素,因为您在for 循环之后创建并添加到sum(而不是在循环之前创建并添加)。

我会将该方法重新排列为(为紧凑而重新格式化):

// Print each studdent test scores and ther average
public static void printStudentReport(String[] names, int[][] scores) {
    out.println("STUDENT REPORT");
    for (int i = 0; i < names.length; i++) {
        out.print("Scores for " + names[i] + ": ");
        out.println();

        double sum = 0;
        for (int s = 0; s < scores[0].length; s++) {
            out.println("Test #" + (s + 1) + ": " + scores[i][s]);
            sum += scores[i][s];
        }
        out.println();
        if (0 < scores[0].length) {
            double average = sum / scores[0].length;
            out.println("Average for " + names[i] + ": " + average);
            out.println();
        }
    }
    out.println();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    相关资源
    最近更新 更多