2016-12-20 5 views
-1

私はjavaの初心者です。配列の偶数intを示すプログラムを作成しようとしています。しかし、私は、境界エラーのうちの配列を得続ける:10私は、「[さえ[] B]式をSYライン29(で助けてください配列外の例外エラーjava

public class arrayone 
{ 
    public static void main(String args []) 
    { 
     /* 
    tell me the number of even ints in the given array. Note: the % "mod" operator computes the remainder, e.g. 5 % 2 is 1. 
    */ 

    //declare an array 
    int[] even= new int[10]; 

    //int b is for the forloop so that every number can be added 
    int b; 

    // 

    //initialize the scanner, and enter prompt 
    Scanner input= new Scanner(System.in); 

    //enter prompt 
    System.out.printf("Enter 10 random numbers\n"); 

    //make a forloop so every number they put in will be added to the array 
    for(b=0;b<10;b++) 
    { 
    even[b]=input.nextInt(); 
    } 

//then run the formula 
formula(even[b]); 
    } 

    public static void formula(int a) 
    { 


     //use an if statement to see if the numbers in the array are odd or even. 
     for(a=0;a<=10;a++) 
     { 
     if((a%2)==0) 
     { 
      System.out.printf("This number is even\n"); 
     } 
     else 
     { 
      System.out.printf("This number isn't even\n"); 

     } 
     } 
    } 
} 
+2

formula' '内でのすべての' for'ループがあってはなりません。あなただけが 'int'を期待しています – Aidin

+0

私はあなたがしていると思うところで正直に迷っています。あなたの 'formula'は全く意味がありません – Aidin

+0

各整数を式に送るのではなく、単に配列全体を送信するのではないのですか? https://repl.it/Eu6c/1 – shash678

答えて

0
for(b=0;b<10;b++) 
    { 
     even[b]=input.nextInt(); 
    } 

のforループ値を出た後。? bは、あなたの配列evenの容量を超えている10になります。配列のインデックスは0-9をしている。したがって、例外。

1

[OK]を、のは

は、あなたが入力の束を読んで、それを格納最初から始めましょう配列では、今のところとても良い。

には、formula(even[b])を実行して1つの値だけを送信しようとしています。しかし、@Sanjeevさんが指摘したように、あなたのb = 10はちょうど前にforループのためこの時点で、array out of boundsを与えています。

そしてformulaであなただけのintを期待しているが、あなたはこのint(あなたのケースでa)に乗り、ちょうどところで0と10の間にどのような数字(包括的)のチェックもあるforループでそれを再割り当てします。私が思っていたものではありません。あなたが本当に何をしたいのか

のいずれかです:

for(int i = 0; i < 10; i++) { 
    formula(even[i]); 
} 

public static void formula(int a) 
{ 
    if((a%2)==0) 
    { 
     System.out.printf("This number is even\n"); 
    } 
    else 
    { 
     System.out.printf("This number isn't even\n"); 
    } 
} 

または

formula(even); 

public static void formula(int[] a) 
{ 
    for(int i = 0; i < a.length(); i++) { 
     if((a[i]%2)==0) 
     { 
      System.out.printf("This number is even\n"); 
     } 
     else 
     { 
      System.out.printf("This number isn't even\n"); 
     } 
    } 
} 
+0

重複とマークされた後、あなたはどのように質問に答えましたか? – shash678

+1

私はおそらく、私がすでにフラグを立てていたときに答えに取り組んでいたと思います – Aidin