2016-07-19 23 views
-1

Von ruby ​​/ rails kommend habe ich viele Schwierigkeiten, die Java-Logik zu übernehmen.java - dem int [] Array in der do-while-Schleife einen Wert zuweisen

Frage - Wie kann man Arrays von Integern in do-while-Schleifen Werte zuweisen (lesen von stdin), um diese Arrays später in späteren Methoden zu verwenden?

Hier ist mein Code-Schnipsel:

void triAnglePerimeter() { 
     //int[][] arrs; 
     //int[] edge1, edge2, edge3 = new int[]; 
     do { 
      System.out.print("X, Y for edge 1: "); 
      int[] edge1 = {Ch3Ex.stdin.nextInt(),Ch3Ex.stdin.nextInt()}; 
      System.out.print("X, Y for edge 2: "); 
      int[] edge2 = {Ch3Ex.stdin.nextInt(),Ch3Ex.stdin.nextInt()}; 
      System.out.print("X, Y for edge 3: "); 
      int[] edge3 = {Ch3Ex.stdin.nextInt(),Ch3Ex.stdin.nextInt()}; 
      int[][] arrs = {edge1,edge2,edge3}; 

      if (!(TriangleHelpers.inputValidityChecker(arrs))) 
       System.out.println("Wrong input. Retype."); 

     } while(!(TriangleHelpers.inputValidityChecker(arrs))); 

     Triangle triAngle = new Triangle(); 
     triAngle.computeSides(arrs); 

     System.out.printf("Triangle perimeter == %.2f\n", triAngle.perimeter()); 
    } 

==================

Ch3Ex.stdin.nextInt(); - Scanner-Objekt, das von System.in liest

==================

Console Fehler:

Tasks3.java:209: error: cannot find symbol 
     } while(!(TriangleHelpers.inputValidityChecker(arrs))); 
                ^
    symbol: variable arrs 
    location: class Tasks3 
Tasks3.java:212: error: cannot find symbol 
     triAngle.computeSides(arrs); 
          ^
    symbol: variable arrs 
    location: class Tasks3 
2 errors 

Wenn Ich mache:

  • ohne do-while, alles funktioniert perfekt;

  • declare Arrays oben do-while und entfernen Erklärungen in do-while nur verlassen:

    edge1 = {Ch3Ex.stdin.nextInt(), Ch3Ex.stdin.nextInt()};

dann bekomme ich Tasks3.java:199: error: illegal start of expression edge1 = {Ch3Ex.stdin.nextInt(),Ch3Ex.stdin.nextInt()};

  • Erklärung und Speicher außerhalb do-while zuweisen:

    int [] side1 = new int [2];

und innen do-while assign Werte getrennt:

side[0] = Ch3Ex.stdin.nextInt(); 

alles auch perfekt funktioniert.

========

Wo ist mein Problem + die Logik-Arrays verstehen Schleifen

+1

Verwenden Sie 'edge1 = neu int [] {Ch3Ex.stdin.nextInt(), Ch3Ex.stdin.nextInt()};' anstelle von 'edge1 = {Ch3Ex.stdin.nextInt(), Ch3Ex.stdin.nextInt ()}; '. –

Antwort

0

Die Lösung lautet:

Deklarieren

int[][] arrs; 
int[] edge1, edge2, edge3; 

außerhalb Do-While-Schleife.

Innen do-while-Schleife wie folgt vorgehen:

edge1 = new int[]{Ch3Ex.stdin.nextInt(),Ch3Ex.stdin.nextInt()}; 

für jeden 1-dim Array und

arrs = new int[][]{edge1,edge2,edge3}; 

für 2-dim-Array.