2016-05-03 11 views
-4

Ich habe eine Textdatei, und wenn ich jede Zeile der Datei lesen und in Array schreiben. Ich möchte prüfen, ob das Zeichen kein Dollarzeichen '$' ist. Wenn ja, dann Springe zum nächsten Zeichen und schreibe den folgenden Teil bis zum nächsten Dollarzeichen im nächsten Array. Daher, um jede Zeile in 3 Teile zu teilen, jedes Teil in einem anderen Array.Überprüfen jedes Zeichen aus der Textdatei, Java

Schätzen Sie Ihre Zeit und Hilfe!

public void retrieveFromTxt() throws IOException

{ 
    textArea.setText(" "); 
    String fileName = "Name_Of_City.txt"; 
    String line = " "; 
    String entry = null; 
    y = 0; 

    char letter = '$', value = ' '; 
    FileReader fileReader = new FileReader(fileName); 
    BufferedReader br1 = new BufferedReader(fileReader); 
    String TextLine = br.readLine(); 

    x = 1; // Random Variable to jump from character to character in array. 
    // To Get Values Back from FIle Each value in correct array, I seperated each value with "$" sign 
    // Checking each letter and printing it to array[y] possition until the $ sign is met, then jump over it and continue in other array. 
    try { 

     while(y < 19) { 
      while(TextLine != null) { 
       while(TextLine.charAt(x)!=(letter)) { 
        line = line + TextLine.charAt(x); 
        Country[y] = (line ); 
        x++; 
       } 
      } 
      while(TextLine != null) { 
       while(TextLine.charAt(x)!=(letter)) { 
        line = line + TextLine.charAt(x); 
        City[y] = (line ); 
        x++; 
       } 
      } 
      while((line = br1.readLine()) != null) { 
       while(line.charAt(x)!=(letter)) { 
        Population[y] = (textArea.getText()+ entry); 

        x++; 
       } 
      } 
      y++; 
      textArea.setText(textArea.getText()+ "\n"); 
     } 

    } 
    catch(FileNotFoundException error) { 
     //Exception can be met if program cannot find the file , in that case messageDialog will pop up with help message 
     JOptionPane.showMessageDialog(null,"Missing file"+",  " + fileName + ",  for a support contact [email protected]!") ; 
    }catch (StringIndexOutOfBoundsException err){} 
    br1.close(); 
} 

}

+0

was haben Sie bisher versucht? Wenn nicht, sollten Sie in den String Tokenizer schauen – zython

+0

Anscheinend erwarten Sie, dass jede Zeile drei Teile hat, obwohl dies nicht klar ist, weil Sie uns keine Beispieleingabe gaben. Sie können vielleicht mit dem Aufspalten von '$' durchkommen. –

+2

@zython: Pro Leute, die Java erstellen und pflegen, das ist ein schlechter Rat. Nach der [StringTokenizer API] (http://docs.oracle.com/javase/8/docs/api/java/util/StringTokenizer.html): '" StringTokenizer ist eine Legacy-Klasse, die aus Kompatibilitätsgründen beibehalten wird, obwohl sie verwendet wird Es wird empfohlen, dass jeder, der diese Funktionalität sucht, stattdessen die Split-Methode von String oder das Paket java.util.regex verwendet. " –

Antwort

2

Versuchen Sie, die string.split Funktion. Sie können:

String s = "my$sign" 
String parts[] = s.split("\\$") 

Nun Teile [0] wird "meine" und Teile [1] wird "Zeichen" halten.

Bearbeiten: Wie von Benutzer Ukfub unten angegeben, müssen Sie das Symbol zu entkommen. Aktualisieren meines Codes zum Nachdenken.

0

String Teile [] = s.split ("$")

, die nicht funktionieren, weil die Parameter für das "Split" -Methode ist ein regulärer Ausdruck. Sie müssen dem Sonderzeichen '$' entkommen:

String parts[] = s.split("\\$") 
Verwandte Themen