2015-10-13 21 views
0

这里的数组赋值:爪哇 - 创建从用户输入

  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的十倍。

+0

你们是不是在Javascript写?或者在Java中?巨大差距。如果这是Java,请修正您的标题。 – jfriend00

回答

0

这里是一个注释的解决方案,指出从你的初始代码改变了什么。你肯定是在正确的轨道上,只是几个小问题。

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); 
} 
3

for循环向后遍历的边界是错误的。你的意思是使用for (int j=10; j>=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); 
} 
+0

@CollinD因为变量'sum'是一个'double',所以可以用一个'int'来分割,并且仍然会得到一个“double”结果。 –

+0

很高兴知道!不太清楚Java如何决定处理那个。 – CollinD