2016-11-30 2 views
-1

3つの配列を持つJavaプログラムを作成します。最初の配列には、50から100までのランダムな整数値のリストが格納されます。プログラムは、渡された値と失敗した値を識別します。 2番目の配列には、渡されたすべての値が含まれます。 3番目の配列にはすべての失敗した値が含まれます。必要な入力には、配列のサイズと合格グレードが含まれます。出力は、元のリスト、合格した成績のリスト、および失敗した成績のリストである。 これは最高のコードではありませんが、私を助けてください。私は研究をしましたが、これは私が持っているすべてです。Javaの条件で別の配列に配列のインデックスを挿入する方法

import java.util.Arrays; 
    import java.util.Scanner; 
    public class array { 

     public static void main(String[] args) { 

    int size; 
    int passing; 
    Scanner input = new Scanner(System.in); 

    System.out.println("Size of Array: "); 
    size = input.nextInt(); 

    System.out.println("Passing Grade: "); 
    passing = input.nextInt(); 

    int [] score = new int [size]; 
    int [] passed= new int [size]; 
    int [] failed= new int [size]; 

    int index = 0; 
    int max = 100; 
    int min = 50; 

    System.out.print("Original List:\n"); 
    for(int a =0; a<=score.length; a++){ 
     score[a] = min + (int)(Math.random() * ((max-min) + 1)); 
     System.out.print(score[a] + "\n"); 
    } 

    System.out.print("Passed Values:\n"); 
    for(int a=1; a<=score.length; a++){ 
     if (score[a] >= passing){ 
      int res = (passed[index++] = score[a]); 
      System.out.print(res + "\n"); 
     } 
    } 
    System.out.print("Failed Values:\n"); 
    for(int a=1; a<=score.length; a++){ 
     if (score[a] <passing){ 
      failed[index++] = score[a]; 
      int res2 = (passed[index++] = score[a]); 
      System.out.print(res2 + "\n"); 
     } 
    } 
} 
    } 
+0

index変数をリセットする必要があります。有効な最大のインデックスは 'array.length - 1'です。 – molbdnilo

+0

あなたがここに力を入れているとすれば、私はあなたに骨を投げます。 2つの別々の指標を使用する。それぞれ 'passed'と' failed'配列の 'passIndex'と' failIndex'を返します。最大 'a'値は' <= 'の代わりに' <'を使います。 'res'計算を分割して配列に入れます。 'print'の代わりに' println'を使って新しい行を処理することができます。 "失敗"ループは、その前のループの 'else'条件になります。不明の理由で失敗したループで 'passed 'を参照します。 – Ironcache

+0

通常、StackOverflowで質問を投稿する場合は、**特定の**問題に対処する必要があります。あなたの問題を分解し、問題の特定の部分を解決できない場合は、SOに助けを求める。基本的に「ここでは自分のコードは機能しません」と言うような質問は、しばしば貧弱です。 – Ironcache

答えて

0

私はループのための3つの主要な問題は、a<score.length代わりのa<=score.lengthをチェックする必要がありました。ループ初期条件の2番目と3番目はa=1の代わりにa=0でなければなりません。ループのための第二の実行後、あなたは一貫して、あなたの配列の外にインデックスを作成している0

public static void main(String[] args) { 

      int size; 
      int passing; 
      Scanner input = new Scanner(System.in); 

      System.out.println("Size of Array: "); 
      size = input.nextInt(); 

      System.out.println("Passing Grade: "); 
      passing = input.nextInt(); 

      int [] score = new int [size]; 
      int [] passed= new int [size]; 
      int [] failed= new int [size]; 

      int index = 0; 
      int max = 100; 
      int min = 50; 

      System.out.print("Original List:\n"); 
      for(int a =0; a<score.length; a++){ 
       score[a] = min + (int)(Math.random() * ((max-min) + 1)); 
       System.out.print(score[a] + "\n"); 
      } 

      System.out.print("Passed Values:\n"); 
      for(int a=0; a<score.length; a++){ 
       if (score[a] >= passing){ 
        int res = (passed[index++] = score[a]); 
        System.out.print(res + "\n"); 
       } 
      } 
      System.out.print("Failed Values:\n"); 
      index = 0; 
      for(int a=0; a<score.length; a++){ 
       if (score[a] <passing){ 
        failed[index++] = score[a]; 
        int res2 = (passed[index++] = score[a]); 
        System.out.print(res2 + "\n"); 
       } 
      } 
     } 
+1

ありがとうございました。そして、私はそれを投稿する前に、a = 1をa = 0に変更するのを忘れました。ありがとうございました。 – beginner101