【问题标题】:Java - Creating an array from user inputJava - 从用户输入创建数组
【发布时间】:2016-01-10 15:58:48
【问题描述】:

这是作业:

  1. 创建一个数组来存储 10 个数字。
  2. 使用循环,提示用户输入 10 个等级并将它们存储在数组中。
  3. 然后创建另一个循环,将数组中的数字向后打印并将数组中的数字相加。
  4. 使用总和计算数字的平均值。打印出这些数字的平均值。

到目前为止我的代码:

public static void ar() {

    double[] grades = new double[10];
    Scanner kb = new Scanner(System.in);

    for(int i=0; i < grades.length; i++)
        grades[i]=kb.nextDouble();

    double sum=0;

    for(int j=10; j > grades.length; j--)
        sum=sum+grades[j];

    double ave = sum/10;

    System.out.println(ave);
}

但是它只打印 0.0 十次。

【问题讨论】:

  • 您是否正在尝试用 Javascript 编写代码?还是在 Java 中?很大的区别。如果这是 Java,请修正您的标题。

标签: java arrays for-loop


【解决方案1】:

for 循环中向后迭代的边界是错误的。你的意思是使用for (int j=10; j&gt;=0; j--)。试试这个代码:

public static void ar() {
    double[] grades = new double[10];
    Scanner kb = new Scanner(System.in);
    for (int i=0; i<grades.length; i++)
        grades[i] = kb.nextDouble();

    double sum = 0;

    for (int j=grades.length-1; j>=0; j--)
        sum = sum + grades[j];

    double ave = sum / 10;
    System.out.println(ave);
}

【讨论】:

  • @CollinD 因为变量sumdouble,所以可以除以int 仍然得到double 结果。
  • 很高兴知道!不太确定 Java 会如何处理这个问题。
【解决方案2】:

这是一个带注释的解决方案,指出了与您的初始代码相比发生了哪些变化。你肯定是在正确的轨道上,只是一些小问题。

public static void ar() {

    double[] grades = new double[10];
    Scanner kb = new Scanner(System.in);

    for(int i=0; i < grades.length; i++)
        grades[i]=kb.nextDouble();

    double sum=0;

    for(int j=9; j >= 0; j--) //Note here that we've changed our condition. It was running zero times before. Additionally it now runs from 9-0, since the last index is 9
        sum=sum+grades[j];

    //Look out for Integer Arithmetic!
    double ave = sum/10.0;

    System.out.println(ave);
}

【讨论】:

    猜你喜欢
    • 2014-11-06
    • 2015-08-14
    • 2020-10-12
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    相关资源
    最近更新 更多