【问题标题】:Having problems utilizing Arrays and for loops in a Java assignment在 Java 赋值中使用数组和 for 循环时遇到问题
【发布时间】:2018-06-21 01:26:40
【问题描述】:

该程序要求“编写一个 Java 程序,首先询问用户他们想输入多少成绩。然后使用 do..while 循环将用户输入的成绩填充到该大小的数组中。然后排序数组。在读取该数组的 for 循环中,显示成绩并汇总成绩。循环后,计算这些成绩的平均值并显示该平均值。"

输出就是问题所在。无论我对代码做什么,它只会输出我输入的两个输入。如果我选择进入 4,5 或 10 级。它只会显示最低的两个。尽管总数和平均值是正确的。我在这里缺少什么?

这是我写的:

import java.util.Scanner;
import java.util.Arrays;

public class TapCoGradeArray
{
    public static void main(String[] args)
    {
        Scanner keyboard = new Scanner(System.in);

        int count;
        double inputGrade = 0;
        double gradeTotal = 0;
        double[] individualGrade; 

        System.out.println("Enter the number of students that are being graded.");
        int numberOfGrades = keyboard.nextInt();

        individualGrade = new double[numberOfGrades];
        count = 0;

        do
        {
            System.out.println("Enter the grade (from 0-100) for each student below.");
            inputGrade = keyboard.nextDouble();
            individualGrade[count] = inputGrade;            
            count++;
            gradeTotal+= inputGrade;

        } while(count < numberOfGrades);

            Arrays.sort(individualGrade);

            for(count = 0; count == individualGrade.length; count++);
            {
                // This next line is using gradeTotal as an array. However, there is no array by that name.
                // Check which array this should be.
                System.out.println("The grades entered are the following: \n" + inputGrade + "\n" + individualGrade[count]);
            }

            double gradeAverage = gradeTotal / numberOfGrades;
            System.out.println("The total of the grades is " + gradeTotal);
            System.out.println("The average of the grades entered is " + gradeAverage);

    }
}

【问题讨论】:

  • 忽略程序内的 cmets。这些是老师之前的意见。

标签: java arrays for-loop


【解决方案1】:

两个主要问题

for(count = 0; count == individualGrade.length; count++);

这不应该有分号并且循环直到达到这个值是正确的。

for(count = 0; count < individualGrade.length; count++) 
{
    System.out.println("The grades entered are the following: \n" +
                         inputGrade + "\n" + individualGrade[count]);
}

【讨论】:

  • 哇,回复太快了!所以我试过了,这是有道理的。但是,输出仍然显示两个数字。不过这一次,它只显示了我上次输入的相同数字的两个副本。 "输入的成绩如下:4.0 4.0 ...."
  • 我认为您不应该在 System.out.println 中包含 inputGrade,因为这是用户刚刚输入的成绩。您应该只在程序中此时显示individualGrade[count]
  • 你确定你删除了分号吗?
  • 好的,所以我完全弄清楚了现在发生了什么。去除半结肠。我展开了输出窗口(因为 Dr. Java 只显示了 4 行。)它显示相同的字符串与我输入的其他输入显示两次。结果我不得不将字符串移到 for 循环之外。
  • 感谢大家的帮助。肯定会更频繁地提到论坛!我不敢相信,一个不应该出现的分号竟然花了 3 个小时!
猜你喜欢
  • 2020-08-06
  • 1970-01-01
  • 2019-02-02
  • 1970-01-01
  • 2023-03-06
  • 2016-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多