2016-11-30 3 views
-1

Schreiben Sie ein Java-Programm, das 3 Arrays hat. Das erste Array speichert Listen von zufälligen Integer-Werten von 50 bis 100. Das Programm identifiziert bestandene und fehlerhafte Werte. Das zweite Array enthält alle übergebenen Werte. Und das dritte Array enthält alle fehlerhaften Werte. Die erforderliche Eingabe umfasst die Größe des Arrays und das Übergeben der Note. Die Ausgaben sind die folgenden: die ursprüngliche Liste, die Liste der bestandenen Noten und die Liste der fehlerhaften Noten. Ich weiß, das ist nicht der beste Code, aber bitte hilf mir. Ich habe meine Nachforschungen gemacht, aber das ist alles was ich habe.Wie man einen Index eines Arrays durch Bedingungen in Java in ein anderes Array einfügt

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

zurückgesetzt sind Sie konsequent außerhalb des Arrays indizieren. Der größte gültige Index ist 'array.length - 1'. – molbdnilo

+0

Angesichts der Tatsache, dass Sie sich hier etwas Mühe gegeben haben, werde ich Ihnen einen Knochen werfen. verwende zwei separate Indizes; 'passIndex' und' failIndex' für die 'passed' und' failed' Arrays. Verwenden Sie '<' anstelle von '<=' für Ihren maximalen 'a' Wert. Teilen Sie die Res-Berechnung auf und platzieren Sie sie im Array. Sie können 'println' anstelle von' print' verwenden, um mit der neuen Zeile zu arbeiten. Die "fail" -Schleife könnte einfach eine "else" -Bedingung für die Schleife davor sein. Sie verweisen in Ihrer Fail-Schleife aus unbekannten Gründen auf "bestanden". – Ironcache

+0

Wenn Sie jedoch Fragen zu StackOverflow stellen möchten, möchten Sie normalerweise ** spezifische ** Probleme behandeln. Brechen Sie Ihr Problem auf und fragen Sie SO nach Hilfe, wenn Sie einen bestimmten Teil des Problems nicht lösen können. Fragen wie diese, die im Grunde sagen "hier ist mein Code, es funktioniert nicht" werden oft schlecht erhalten. – Ironcache

Antwort

0

fand ich drei Hauptthemen, für Schleife für a<score.lengtha<=score.length statt überprüfen sollte. Die zweite und dritte Schleifenbedingung sollte a=0 anstelle von a=1 lauten. Nach der Ausführung des zweiten for-Schleife sollten Sie index Variable 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

Vielen Dank. Und ja, ich habe vergessen, a = 1 zu a = 0 zu ändern, bevor ich es gepostet habe. Vielen Dank. – beginner101

Verwandte Themen