2016-04-28 69 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