2016-04-28 54 views
1

我正在试图制作一个程序,让用户输入10个整数,然后计算该整数的平均值。我在System.out.println("average : " + average);行中得到Unreachable code错误。调用变量中的错误(无法访问的代码)

我已经尝试创建一个新类并将该方法调用到我的主要方法,但它似乎不是一个简单的方法来做到这一点(还有一些错误,使我更加困惑)。所以我想我可以制作一个简单的程序。但我不明白代码中出了什么问题。这是代码。

package nomer15; 

import java.util.Scanner; 

public class averag { 

    public static void main(String[] args) { 

     System.out.println("Enter 10 integers : "); 

     double average; 
     int sum = 0; 
     Scanner sc = new Scanner(System.in); 
     int numbers[] = new int[10]; 
     for(int i = 0; 1 < 10; i++){ 
      numbers[i] = sc.nextInt(); 

      sum = sum + numbers[i]; 

      average = sum/10; 

     } 

     System.out.println("average : " + average); // (Unreachable code error) 

    } 

} 

你能弄清楚我做错了什么吗?谢谢。

+5

for循环条件'1 <10'使得循环永远运行。我怀疑你打算把'我<10'。 –

+0

大声笑对不起,我没有意识到这一点!有用!但我必须初始化'平均'谢谢。 – bnrfly

+3

@JonnyHenly很好发现 –

回答

2

除了你的循环测试是不正确的(1是总是小于10),则应计算循环后的平均值。你不应该使用整数数学。最后,我宁愿numbers.length魔术10。像

public static void main(String[] args) { 
    int[] numbers = new int[10]; 
    System.out.printf("Enter %d integers : ", numbers.length); 
    int sum = 0; 
    Scanner sc = new Scanner(System.in); 
    for (int i = 0; i < numbers.length; i++) { 
     sum += (numbers[i] = sc.nextInt()); 
    } 
    double average = sum/(double) numbers.length; 
    System.out.println("average : " + average); 
} 
+0

这段代码完全比我的好。顺便说一句,为什么我们需要'numbers.length'?你能解释一下这条线的含义吗? 'sum + =(numbers [i] = sc.nextInt());' – bnrfly

+0

我更喜欢'numbers.length',因为这样您将'new int [10]'更改为'new int [20]'或'new int [5]'并且代码仍然有效。将'sc.nextInt()'赋值给'numbers [i]'将相同的值加到'sum'上。 –

+0

非常感谢你 – bnrfly

2

你在你的代码一个错字看着下面的一行:

for(int i = 0; 1 < 10; i++) 

你可能是指代码应该是:

for(int i = 0; i < 10; i++) //replace 1 with i 
+0

未来,考虑使用错字关闭原因。 – Savior

0

一些原来的故障for(int i = 0; 1 < 10; i++)我没有意识到,我把1而不是i那里。 现在它初始化后就像一个魅力average