2016-07-14 11 views
1

Als Anfänger mache ich Online-Probleme, um Arrays zu verstehen, das ist keine Hausaufgabe, sondern Übung. Jeder Rat hilft!Array-Elemente Vergleich Java

Der Code sollte Benutzereingabe nehmen.

Problem:

Drucken zwei Leerzeichen getrennte ganze Zahlen, die jeweiligen Vergleichswerte verdient mit A und B bezeichnet

  • Probeneingangs
  • Beispielausgabe

Erläuterung

In diesem Beispiel: A = (a0, a1, a2) wobei die Werte (5,6,7)

B = (b0, b1, b2) wobei die Werte (3,6,10) sind

Vergleichen Sie jedes einzelne Ergebnis:

a0> b0 ==> also erhält A 1 Punkt.

a0 = b0 ==> niemand erhält einen Punkt.

b0> a0 ==> B erhält also 1 Punkt.

A's Vergleichswert ist 1 und B's Vergleichswert ist 1. So drucken wir 1 1 in einer einzigen Zeile.

Ansatz 1:

Zuerst dachte ich, dies als ein 2D-Array Umsetzung, aber ich habe nur so weit, wie ich bin nicht sicher, wo der Vergleich zu implementieren:

public class CompareElem2DArray{ 
    public static void main(String[] args) 
    { 
     Scanner in = new Scanner(System.in); 
     int array2d [][]= new int[3][3]; 
     System.out.println("Please enter 3 marks for A and 3 marks for B: "); 

     for(int a = 0; a<3; a++) //row 
     { 
      for(int b=0; b<3; b++)//column 
      { 
       int array2d[a][b] = in.nextInt(); 
      } 

     } 

     for (int column = 0; column<3; column++) 
     { 
      for(int row=0; row<3; row++) 
      { 
       System.out.println(array2d[column][row]+" "); 
      } 
     } 

     System.out.println(); 

    } 
} 

Ansatz 2 :

Dies ist mein zweiter Versuch ohne Verwendung von 2D-Arrays.

public class Comparison { 

    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     int a0 = in.nextInt(); 
     int a1 = in.nextInt(); 
     int a2 = in.nextInt(); 
     int b0 = in.nextInt(); 
     int b1 = in.nextInt(); 
     int b2 = in.nextInt(); 

     int a[] = new int[3]; 
     int b[] = new int[3]; 
     int firstAns = 0; 
     int secondAns = 0; 

     for(int i = 0; i<3; i++) 
     { 
      int a[i] = in.nextInt(); 
      System.out.println(a[i]); 
     } 
     for(int j = 0; j<3; j++) 
      { 
      int b[j] = in.nextInt(); 
      System.out.println(b[j]); 
     } 
     for(int z = 0; z<3; z++) 
      { 
       if(a[z]>b[z]) 
        { 
        firstAns++; 
       } 
      else if(a[z]<b[z]) 
       { 
       secondAns++; 
      } 
      else 
       { 
       return; 
      } 
     } 
    System.out.println(firstAns); 
     System.out.println(secondAns);   
} 
} 
+0

I Ich bin nicht sicher, was Sie hoffen, um Antworten zu erhalten, aber mein erster Gedanke ist, dass Sie vorschlagen, dass Sie über Ihren Kodierungsstil nachdenken. Es ist sehr wichtig, dass die Platzierung der Klammern, die Benennung, der Abstand usw. im Vordergrund stehen. Ihr Code muss von Ihnen und anderen gelesen werden. Das könnte wichtiger sein als die Ausführung. Dein Code ist schwer zu lesen. Der Java-Standard schlägt vor, Klammern an das Ende der Zeilen und nicht an die nächste Zeile zu setzen. C# Entwickler neigen dazu, sie in die nächste Zeile zu setzen. Ich bevorzuge das ehemalige. Du solltest auch. – duffymo

+0

Ein 2D-Array macht hier nicht viel Sinn, weil Sie nur zwei Arrays haben, und ein 'int [2] [x]' Array ist unnötig kompliziert. – Zircon

+0

Es gibt keine Frage in Ihrer "Frage". Sie werden mehr Fische fangen, wenn Sie etwas wie "Hier ist mein Code, und hier ist die Fehlermeldung, die ich bekomme, wenn ich versuche, es zu kompilieren, was habe ich falsch gemacht?" oder "Hier ist mein Code, hier ist, was ich bekomme, wenn ich es führe, Hier ist, was ich dachte, dass ich bekommen würde, was vermisse ich?" –

Antwort

0

können Sie versuchen

tun
int[] ar = {5,6,7,3,6,10}; 
    int halflen= (ar.length)/2; 
    int[] result = new int[halflen]; 

    for(int i=0,j=halflen;i<halflen;i++,j++) 
    { 
     result[i]=ar[i]-ar[j]; 
    } 

Jetzt haben Sie ein Array mit 3 Ergebnisse, wenn 0 zeichnen, was wie> 0 den Punkt gemacht Sie das Array Looping beseitigen können, wenn Sie wollen, und fügen Sie Ihre wenn ther auch wie:

  If (ar [i] > ar [j]) A++; 
     If (ar [i]<ar [j]) B++; 
+0

Vielen Dank für den Vorschlag. – codeLearner

0

In Ansatz 1, glaube ich, dass das, was Sie brauchen, ist [3] [2] oder [2] [3] Array (3 Zahlen, die Sie haben zwei Sätze von Daten, in einem Satz gibt es). Dann wird der Vergleich in der zweiten Schleife geht (in diesem Fall ist array2d [3] [2]):

for(int i=0; i<3; i++) 
    { 
     //comparison goes here 
    } 

Sie müssen Werte von array2d vergleichen [i] [0] mit array2d [i] [1 ].

Wenn der Eingang ist: 5 6 7 3 6 10

2D-Array ist etwas wie:

So die zweite Schleife 5 vergleicht mit 3, 6 mit 6 und 7 mit 10