2017-02-07 1 views
0

Also im Wesentlichen lese ich aus einer TXT-Datei ein und schreibe eine verschlüsselte Kopie in eine neue Datei. Der Professor sagte am Ende jeder Zeile fügen Sie eine 0 am Ende davon, so dass Ihr Programm weiß, dass das Ende dieser Zeile ist. Ein Beispiel wäreWie drucke ich, wenn ich ein bestimmtes Zeichen in meiner Zeichenfolge erreiche?

sein

THECATCRIES0

THEDOGCRIES0

Das Problem ist, dass egal, was ich meinen Code zwicken ich nicht die zusätzliche Zeile drucken erscheinen können, so meine kopiert verschlüsselte Version alle Drucke auf einem wirklich lange Linie. Mein Code ist wie

  for(int n = 0; n < first.length()-1; n+=2) { 
       String character = first.substring(n, n + 2); 
       alpha = character.charAt(0); 
       bravo = character.charAt(1); 
       firstLetter = (int)(alpha) - 65; 
       secondLetter = (int)(bravo) - 65; 
       File newFile = new File("newcopy.txt"); 

       PrintWriter write = new PrintWriter(new FileWriter(newFile, true)); 
       if(secondLetter < 10){ 
        write.print(firstLetter); 
        write.print(0); 
        write.print(secondLetter); 
        if(Character.isDigit(bravo) || Character.isDigit(alpha)){ 
         write.println(); 
        } 

       } else { 
        write.print(firstLetter); 
        write.print(secondLetter); 
        if(Character.isDigit(bravo)|| Character.isDigit(alpha)){ 
         write.println(); 
        } 

       }write.close(); 

folgt Wenn ich gegoogelt es ich online die isdigit Methode gefunden, die einen booleschen Wert zurückgibt, die true zurückgeben sollte, weil es eine 0 am Ende ist. Ich habe versucht, diese Methode in beiden if/else-Anweisungen zu platzieren und habe auch versucht, eine reguläre System.out.println() zu verwenden, was meiner Meinung nach nicht funktionieren würde, weil ich PrintWriter verwende, um meine Sachen in die neue Datei zu schreiben. Ich sollte auch beachten, dass das Zeug, das ich "verschlüssle", in Großbuchstaben geschrieben ist. Das ist, um die Zahlen für meine verschlüsselten Buchstaben zu erhalten, wenn ich sie in Zahlen umwandle.

+0

Wie wäre es 'String.endsWith' https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#endsWith(java.lang.String) –

+0

die einzige Problem damit ist, dass ich die Linie nur drucken muss, wenn es die 0 erreicht. Wenn ich diese Methode benutze, glaube ich, dass es eine Linie jedes Mal durch nicht nur am Ende drucken wird. –

Antwort

0

Ist das wonach Sie suchen?

try(Stream<String> stream = Files.lines(Paths.get(newFile.toURI()))) { 
    stream.forEach(s -> {if(s.endsWith("0")) System.out.println(s);}); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
Verwandte Themen