2017-02-20 3 views
0

Ich mache dieses Programm und ich bekomme immer "Null" Fehler am Ende der Ausgabe, wenn ich drucke, wie Sie im Code sehen. Es liest Datei gut, aber am Ende fügt es so viele Null hinzu. Jede Anleitung wird geschätzt! Hier ist was ich bisher versucht habe.Null Fehler in der Ausgabe nach dem Lesen der Datei

public static void main(String[] args) throws Exception 
{ 
    Stack nifo=new Stack(); 
    FileReader file = new FileReader("infix.dat"); 
    try (BufferedReader br = new BufferedReader(file)) { 
     String [] words = new String[50]; 
     String text=""; 
     int ctrl = 0; 
     String Line =br.readLine(); 
     while (Line!= null) 
      { 
      words[ctrl]= Line; 
      Line = br.readLine(); 
      ctrl = ctrl + 1; 
      }//end of while loop 


      for (int i = 0; i < words.length; i++) 
      { 
      System.out.println(words[i]); 
      } 
      file.close(); 
     } catch (IOException e) { 
     e.printStackTrace(); 
    }//end of catch 

}//end of main class 

und meine Ausgabe ist das unten. Wie Sie sehen, wird am Ende nach dem Lesen meiner Datei null gedruckt.

5 * 6 + 4 
3 - 2 + 
(3 * 4 - (2 + 5)) * 4/2 
10 + 6 * 11 -(3 * 2 + 14)/2 
    2 * (12 + (3 + 5) * 2 
    null 
    null 
    null 
    null 
    more nulls after that. 

Vielen Dank!

+1

Das ist kein Fehler, das ist der gesamte leere Speicherplatz in Ihrem Array. – azurefrog

Antwort

0

Da Sie nicht sicher, ob der Array-Größe sind und wenn Sie mit Arrays halten wollen, dann folgendes könnte Ihr Problem

 for (int i = 0; i < words.length && words[i] != null; i++) 
     { 
      System.out.println(words[i]); 
     } 
     file.close(); 

So stellen Sie sicher fixieren, dass Ihre Schleife verarbeitet keine Nullwerte für einen beliebigen Index in einem Wortarray. Da die Indizes, die nie in dem Array aufgefüllt wurden, auf null initialisiert wurden, wenn Sie ein Array mit fester Größe deklarierten

+0

Danke für die Eingabe und schnelle Antwort. – mike

+0

Ich hoffe, das hat Ihnen geholfen, weil ich nicht daran interessiert war, Ihr Array durch eine andere Datenstruktur zu ersetzen. Aber die andere Antwort ist es wert, wenn Sie nach Abwechslung suchen :) – ShayHaned

1

Sie deklarieren eine feste Größe Array:

String[] words = new String[50]; 

Sie dann in es einige Werte speichern und dann drucken Sie jedes Element:

for (int i = 0; i < words.length; i++) { 
    System.out.println(words[i]); 
} 

Alle Elemente, die Sie nicht verwendet haben sind null. Also, wenn Ihre Datei 6 Zeilen hat, wird es diese 6 Zeilen und dann 44 Nullen drucken, da Sie nichts in die anderen 44 Steckplätze Ihres Arrays gesteckt haben. Ich schlage vor, Sie verwenden eine andere Datenstruktur, wie eine Liste. Dadurch können Sie nur die Anzahl der benötigten Werte speichern.

Versuchen Sie folgendes:

public static void main(String[] args) throws Exception 
{ 
    Stack nifo=new Stack(); 
    FileReader file = new FileReader("infix.dat"); 
    try (BufferedReader br = new BufferedReader(file)) { 
     List<String> words = new LinkedList<>(); //replaced your array with a list 
     String text=""; 
     String Line =br.readLine(); 
     while (Line!= null) 
      { 
      words.add(Line); 
      Line = br.readLine(); 
      }//end of while loop 

      for (String word : words) 
      { 
      System.out.println(word); 
      } 
      file.close(); 
     } catch (IOException e) { 
     e.printStackTrace(); 
    }//end of catch 

}//end of main class 
+0

Vielen Dank und danke für den Tipp für die verlinkte Liste !! – mike

+0

@ Mike gerne helfen! Bitte denken Sie daran, upvote und akzeptieren Sie die Antwort, wenn dies Ihr Problem gelöst hat =] – nhouser9

Verwandte Themen