2015-08-29 44 views
1

嗨每個人我都在練習Java語言。我面臨這個問題。我是這種語言的初學者。我正在研究它,在我的拼貼畫中。這是問題。我編譯我的程序時出現錯誤(異常在線程「main」java.lang.ArrayIndexOutOfBoundsException)

「創建Java程序,將得到一個數字的總和。例如,5的輸入會產生(1 + 2 + 3 + 4 + 5 = 15)」

我知道答案,但我試圖用另一種方式解決它。在Java中開始

public class Sum11 { 
    static int i; 

    static int[] S = new int[5]; 
    static int j; 
    static int Sum = 0; 

    Sum11(int i,int S[],int j){ 
    this.S=S; 
    this.i=i; 
    this.j=j; 

    } 


    public static void main(String[] args){ 
     Scanner s1 = new Scanner(System.in); 
     for(i=1;i<=5;i++){ 
      System.out.println("Enter FIve Number"); 
      S[i]= s1.nextInt(); 
     } 
     for(int num : S){ 
      Sum = Sum+num; 
     } 
     System.out.println("The Result IS: "+Sum); 
    } 

} 

回答

1

數組的索引0,所以你的輸入迴路應該是:

System.out.println("Enter Five Numbers"); 
for(i=0;i<S.length;i++) { 
    S[i]= s1.nextInt(); 
} 
0

數組S被初始化爲:

static int[] S = new int[5]; 

然後在從1循環到5的main函數:

for(i=1;i<=5;i++){ 
    System.out.println("Enter FIve Number"); 
    S[i]= s1.nextInt(); 
} 

試圖在索引1,2,3,4來設定值,5. 但在Java陣列的被基於0的, 所以在這個例子中,索引應該是0,1,2 ,3,4.

你很容易出現這樣的問題,因爲S聲明和初始化遠離它實際使用的地方。 而你根本不需要它。 你可以實時計算, 總和不使用數組摸索:

int sum = 0; 
for(i=1;i<=5;i++){ 
    System.out.println("Enter FIve Number"); 
    sum += s1.nextInt(); 
} 
+0

謝謝你的人,幫助我很多 – Moayad

0

Java數組的開始索引是0 你必須到:

for(i=0;i<5;i++){ 
+0

謝謝二萬您的幫助 – Moayad

1

與陣列的問題索引S[5]包含5個元素的數組是一個問題。 另一個問題是,我認爲你誤解了這個練習。

「創建Java程序,將得到一個數字的總和。例如,5的輸入會產生(1 + 2 + 3 + 4 + 5 = 15)」

它請求「的一個的」,而不是「數小號」, ,似乎該輸入是單數,例如數5.

的該溶液使用一個循環可以是用於例如:

int num = scanner.nextInt(); 
int sum = 0; 
for (int i = 1; i <= num; ++i) { 
    sum += i; 
} 

,還設有一個簡單的公式數學解決方案:

int num = scanner.nextInt(); 
int sum = num * (num + 1)/2; 
相關問題