java - 用用户输入填充数组

标签 java

我很抱歉,我知道这看起来很简单,但我对编码有点陌生。该程序的目标是从索引 0 开始获取用户的输入,然后将输入保存到数组中。我可能即将解决这个问题,但我需要一些帮助。

这是代码:

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

    int numberOfGrades;
    int counter = 0;

    System.out.println("This program averages the grades you input.");
    System.out.println("Please enter the number of grades you'd like averaged: ");
    numberOfGrades = input.nextInt();

    int[] grades = new int[numberOfGrades];

    do
    {
        System.out.println("Please enter grade number " + (counter+1) + ": ");
        grades[numberOfGrades] = input.nextInt();
        counter++;
    } while (counter < numberOfGrades);

    System.out.println("The number of grades you wanted averaged was: " + grades.length);


}
}

最佳答案

你的逻辑有点不对劲。 numberOfGrades 是.. 嗯.. 等级数。当您执行此操作时:grades[numberOfGrades] = input.nextInt(); 然后您将用户的输入放入 grades 数组中的 numberOfGrades 位置>,这是你不想要的。

你想要的是:

do {
    System.out.println("Please enter grade number " + (counter+1) + ": ");
    grades[counter] = input.nextInt();
    counter++;
} while (counter < numberOfGrades);

这样,就可以访问位置 counter 中的数组,并将用户的输入放置在其中的正确位置。

此外,要计算平均成绩,就像您在类(class)结束时尝试做的那样,您应该这样做:

double sum = 0;
for (int grade : grades) 
    sum += grade;

然后你的平均值将是:

average = 1.0d * sum / grades.length;

您也可以将此求和逻辑放入 do-while 循环中,并避免我引入的额外循环。

关于java - 用用户输入填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36136388/

相关文章:

java - 在java中只打印一次随机数组变量

java - 验证正则表达式 : Make sure it will match at least two characters

java - Litle API jar 的 SSL 问题 - 证书中的主机名与 : <208. 70.177.61> != <prelive.litle.com> 不匹配

java - Java基础知识: Project Euler problems

java - 查询以检查时间戳

java - 从 netbeans 导出 .jar 文件后,Jpos 打印机无法工作

java - 奇怪的 org.springframework.jdbc.BadSqlGrammarException

java - 当使用带有 next() 和 nextLine() 的扫描器读取 2 个看似相同的字符串时,为什么会得到 equals() == false ?

java - 如何在 Java 中为成员 arraylist 变量实现惰性初始化?

java - Android/Java创建帮助程序类以创建图形