2017-12-08 2 views
-1

Diese die Anweisungen für mein Programm sind:Ich kann den Wagenrücklauf in meinem Programm abholen

Die erste Zeile zu dieser Datei wird eine Reihe halten die angibt, wie viele Zeilen folgen. Jede Zeile danach wird ein Wort und eine ganze Zahl enthalten. Füllen Sie zwei Arrays, eins für das Wort und eins für die ganze Zahl. Sobald die Arrays gefüllt sind, gehen Sie zu jedem Element des String-Arrays und drucken Sie den String aus, wie oft das parallele Zahlen-Array sagt, dass es gedruckt werden soll.

Wenn ich jedoch versuche, die Antwort auszudrucken, tritt ein Fehler auf, der besagt, dass beim Lesen aus der Datei keine Zeile zu lesen ist, die ich lesen soll.

Scanner input = new Scanner(new File("parallel.txt")); 
    int numLine = input.nextInt(); 

    int [] array = new int[numLine]; 
    String [] Stringarray = new String[numLine]; 

    for (int i = 0; i< numLine; i++) 
     { 
      Stringarray[i] = input.next(); 
      array[i] = input.nextInt(); 
      input.nextLine(); 
     } 

    for (int i = 0; i<Stringarray.length; i++) 
     { 
      for (int a = 0; a<array[a]; a++) 
       out.print(Stringarray[i] + " "); 
      out.println(); 
     } 

} 

}

+1

Eine Probe des Eingangs helfen würde. – Sid

+1

Ich dachte, das könnte ein Duplikat von https://stackoverflow.com/q/23036062 gewesen sein, aber wenn ich genauer hinsehe, sehe ich es wahrscheinlich nicht. Wenn Sie Hilfe dabei haben möchten, sollten Sie uns besser sagen, was genau der Fehler sagt, und uns die Eingabe zeigen. –

+0

Legen Sie fest, dass ein Fehler auftritt, der besagt, dass keine Linie zu erfassen ist. – EJP

Antwort

0

Im ersten Teil des Codes, lesen Sie die erste Ganzzahl in der Datei und aber Sie nicht die Newline-Zeichen zu lesen. Sie versuchen dann, das erste Token aus der zweiten Zeile mit Stringarray[i] = input.next() zu lesen, aber Ihr Scanner wartet immer noch auf die erste Zeile und es gibt keine nächste. Sie können das in Ordnung bringen in etwa so:

int numLine = input.nextInt(); 
input.nextLine(); 

Ich ziehe eine ganze Zeile auf einmal zu lesen, und dann separat zu analysieren, ist es viel sauberer. Zum Beispiel, und ohne Fehlerprüfung:

String line = input.nextLine(); 
int number = Integer.parseInt(line); // parse the entire line as an integer 

String line = input.nextLine(); 
String[] parts = line.split(" "); // split the line on spaces 
String word = parts[0]; // treat the first part as a string 
int number = Integer.parseInt(parts[1]); // parse the second part as an integer 

Im zweiten Teil des Codes, das Wort X mal auszudrucken Sie den Zahlen-Array mit dem gleichen Index wie das Wort Array-Index benötigen.

for (int i = 0; i < Stringarray.length; i++) // for each word in the Stringarray 
{ 
    for (int a = 0; a < array[i]; a++) // index with i, not a 
     System.out.print(Stringarray[i] + " "); // print the word 
    System.out.println(); 
} 
0

Sie wollen das String-Array-Element drucken, um die ganze Zahl in der Datei entsprechenden

so haben Sie eine Eingabedatei wie unter

3 //indicate the line number 
string1 6 
string2 7 
string3 5 

und Sie eine Ausgabe wie unten

erwartet
string1 string1 string1 string1 string1 string1 
string2 string2 string2 string2 string2 string2 string2 
string3 string3 string3 string3 string3 

Ich möchte nicht Ihre Logik ändern, können Sie dies für die Ausgabe verwenden

for (int a = 0; a<array.length; a++) 
for(int k=0;k<array[a];k++) 
    System.out.print(Stringarray[a] + " "); 
System.out.println() 

Stringarray[a] -> hier gewohnt wir jede Arrayindexbound Ausnahme als die Länge der Stringarray und array bekommen sind immer gleichen

Verwandte Themen