2016-10-28 1 views
0

Ich hätte gerne zwei Unterprogramme createArray() und print(). Print() erfordert die multArray Variable von createArray() und ich habe das Programm geschrieben, so dass das Array nicht lokal in Main erstellt wird. Ich merke, dass ich createArray als createArray(int a, int b) setzen konnte, aber ich entschied mich dagegen. Wird das jetzt zurückkommen, um mich zu beißen, oder gibt es noch einen Weg, dies zu erreichen, ohne die vorgeschlagene Änderung zu machen?Gibt es eine Möglichkeit, multArray im Unterprogramm print() von createArray() zu drucken?

import java.util.*; 
import java.io.*; 

public class Array { 

    public static void main(String[] args) { 

     Scanner scan = new Scanner(System.in); 
     String newLine = System.lineSeparator(); 
     String choiceInput; 
     boolean stop = false; 
     boolean firstTime = true; 


     while (stop == false){ 

      if (firstTime == true) { 
       System.out.println("Welcome To The Multiplications Table Creator!" + newLine + newLine + "Would you like to:" + newLine + newLine + "Create   Print   Exit" + newLine + newLine + "Please enter one of the above in the space below: "); 
      } 
      else { 
       System.out.println("Welcome Back!" + newLine + newLine + "Would you like to:" + newLine + newLine + "Create   Print   Exit" + newLine + newLine + "Please enter one of the above in the space below: "); 
      } 
      choiceInput = scan.nextLine().toUpperCase(); 

      if (choiceInput.equals("CREATE")) { 
       createArray(); 
       firstTime = false; 

       for (int count = 0; count < 10; count++) { 
        System.out.println(newLine); 
       } 

      } 
      else if (choiceInput.equals("PRINT")) { 
       print(); 
       firstTime = false; 
      } 
      else if (choiceInput.equals("EXIT")) { 
       for (int count = 0; count < 10; count++) { 
        System.out.println(newLine); 
       } 
       System.out.print("Thank you for using the program!"); 
       for (int count = 0; count < 2; count++) { 
        System.out.println(newLine); 
       } 
       stop = true; 
      } 
      else System.out.println("You did not enter one of the above!"); 
     } 
    } 

    public static int[][] createArray() { 

     Scanner s = new Scanner(System.in); 
     String newLine = System.lineSeparator(); 
     int a; 
     int b; 

     System.out.print("How big would you like your multiplication table to be? (A x B)" + newLine + "A: "); 
     a = s.nextInt(); 
     System.out.println(a + " x "); 
     b = s.nextInt(); 

     int[][] multArray = new int[a][b]; 

     for (int countA = 1; countA <= a; countA++) { 
      for (int countB = 1; countB <= b; countB++) { 
       multArray[countA - 1][countB - 1] = countA * countB; 
      } 

     } 
     System.out.print("Creating ."); 
     delay(1000); 
     System.out.print(" ."); 
     delay(1000); 
     System.out.print(" ."); 
     delay(1000); 
     System.out.println(newLine + "Done."); 
     return multArray; 

    } 

    public static void print() { 
     **//This is where I need to print multArray created above is it possible?** 
    } 

    public static void delay(int millis) { 
     try { 
      Thread.sleep(millis); 
     } 
     catch (InterruptedException exp) { 
     } 
    } 
} 
+1

sidnote 1: Definieren Sie einen globalen Scanner und verwenden Sie ihn erneut. Sie müssen nicht mehrere davon definieren. sidenote 2: 'if (! stop)' und 'if (firstTime)' liest sich besser als der Vergleich mit einem bool-Wert in meinen Augen. – SomeJavaGuy

+0

Sie haben das Ergebnis der Funktion 'createArray()' nicht gespeichert, daher können Sie 'print()' nicht richtig verwenden. Sie müssen es als ein privates Mitglied speichern und dann in 'print()' darauf zugreifen oder es als Parameter an 'print()' übergeben. – Ghost93

+0

Ist das 'return multArray;' in diesem Fall nicht ausreichend? In Bezug auf Code, was würde ich von mir verlangen? –

Antwort

1

Ihre createArray Methode gibt ein int[][] Array, so dass Sie so etwas wie dieses

int[][] multiArray = createArray();tun kann // Speichern des Ergebnisses von Array-Verfahren in Multiarray erstellen

Jetzt ist Ihre print Methode ändern Akzeptieren Sie ein int[][] Array, etwas wie dieses

public static void print(int[][] multiArray);// print Methode, die multiArray eine int [] [] Array als Parameter

Pass akzeptiert Methode zu drucken, wenn Sie Druckverfahren so etwas wie diese

print(multiArray)// Bestehen der früheren Ergebnisse der Create nennen, die sind MultiArray zum Drucken der Methode.

Jetzt innerhalb der Druckmethode können Sie multiArray drucken.

+0

Ok danke für die Hilfe, aber wo im Code wird der Int [] [] MultiArray = createArray(); 'gehen? –

+0

Der Ort, an dem Sie gerade die createArray-Methode aufrufen. Innerhalb dieser if-Bedingung 'if (choiceInput.equals (" CREATE "))', ersetzen Sie einfach diese Zeile 'createArray();' durch 'int [] [] multiArray = createArray();'. – Ravikumar

+0

Vielen Dank für die Hilfe! –

0

Sie möchten durch Ihre y- und x-Achse iterieren. In diesem Beispiel sollten alle Zeilenelemente für jede Spalte gedruckt werden. Daher wird die erste for-Schleife durch Ihre Zeilen und die zweite durch jedes Element in der einzelnen Zeile durchlaufen.

public static void printArray(int[][] multArray) { 
    for(int i = 0; i < multArray.lenght(); i++) 
     { 
      for(int j = 0; j < multArray[i].lenght(); j++) 
      { 
      System.out.printf("%5d ", multArray[i][j]); 
      } 
      System.out.println(); 
     } 
Verwandte Themen