2017-01-25 7 views
1

Ich arbeite an einer Aufgabe, in der ich eine Beispieleingabe aus einer Datei einlesen und in ein 2D-Array einfügen muss. Hier ist ein Beispiel für die Eingabe:Einlesen von Werten zum Einfügen in ein 2D-Array

5 6 
1 3 4 B 4 3 
0 3 5 0 0 9 
0 5 3 5 0 2 
4 3 4 0 0 4 
0 2 9 S 2 1 

Die 5 und 6 sind die Abmessungen des Arrays. Der Benutzer muss in der Lage sein, viele Arrays auf einmal einzugeben, das Programm endet, wenn der Benutzer -1 eingibt. Dies ist der Code habe ich so weit, dass nicht zu funktionieren scheint, wie es sollte (ich aus dem Array Drucken Sie den Code arbeitet, um sicherzustellen):

public static void main (String[] args){ 
    Scanner sc = new Scanner(System.in); 
    int arHeight = sc.nextInt(); 
    int arWidth = sc.nextInt(); 
    sc.useDelimiter(" "); 
    String[][] map = new String[arHeight][arWidth]; 

     for(int i=0; i<arHeight; i++){ 
      for(int j=0; j<arWidth; j++){ 
       map[i][j] = sc.nextLine(); 
      }//end inner for 
     }//end outter for 

      for(int i=0; i<arHeight; i++){ 
      for(int j=0; j<arWidth; j++){ 
       System.out.print(map[i][j] + " "); 
      }//end inner for 
     }//end outter for 
    } 

Die Zuweisungszustände, die ich nicht Rekursion verwenden können, und dass Ich muss 2D-Arrays verwenden. Ich habe mir andere Fragen angeschaut, kann es aber immer noch nicht herausfinden. Danke für die Hilfe !!

+0

Willkommen bei Stack Overflow! Es sieht so aus, als ob du nach Hausaufgabenhilfe fragst. Obwohl wir damit keine Probleme haben, beachten Sie bitte diese [dos and don'ts] (http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions)/338845 # 338845) und bearbeiten Sie Ihre Frage entsprechend. –

+0

Danke, ich komme direkt darauf :) – Gabbie

Antwort

2

Sie lesen die ganze Zeile i * j mal

for(int i=0; i<arHeight; i++){ 
     for(int j=0; j<arWidth; j++){ 
      map[i][j] = sc.nextLine(); 

auch halten Sie al die Daten in einem String-Array, und ich weiß nicht, warum. Hier ist die Lösung:

public static void main(String[] args) { 
    Scanner sc = new Scanner(System.in); 
    int arHeight = sc.nextInt(); 
    int arWidth = sc.nextInt(); 

    int[][] map = new int[arHeight][arWidth]; 

    for(int i=0; i<arHeight; i++){ 
     for(int j=0; j<arWidth; j++){ 
      map[i][j] = sc.nextInt(); 
     }//end inner for 
    }//end outter for 

    for(int i=0; i<arHeight; i++){ 
     for(int j=0; j<arWidth; j++){ 
      System.out.print(map[i][j] + " "); 
     }//end inner for 
    } 

} 

Dann

char[][] map = new char[arHeight][arWidth]; 

und in der for-Schleife zu verwenden versuchen:

if(sc.next().charAt(0) != " ") map[i][j] =sc.next().charAt(0); 

Auf diese Weise können alle Zeichen lesen sollten, die nicht "".

+0

Ich hatte ein String-Array verwendet, weil es zwei Zeichen im Array gibt, B und S. Würde ein Array von Zeichen am besten funktionieren? – Gabbie

+0

Ich werde die Antwort aktualisieren. Ich habe nicht beobachtet, dass Sie Zeichen haben –

+0

Danke, ich schätze die Hilfe! Es scheint jetzt richtig zu funktionieren! – Gabbie

Verwandte Themen