2016-12-06 1 views
0

Bisher habe ich viel im Code gemacht .. ich die Satzzeichen aus der Textdatei ersetzt, aber ich weiß nicht, wie die Worte zu finden mit geraden und ungeraden Längen und addiere sie zu ihrer Zählung. Also: Mein Wordcount für diese Datei ist 114 Wörter, aber dieses Programm gibt 50 gerade Wörter und 55 ungerade Wörter zurück, die nicht zu meiner Wortzahl von 114 addiert werden, also ist offensichtlich etwas falsch.Entfernen Interpunktion Marks aus einer Textdatei und dann die Berechnung ungeraden und geraden Länge Wörter

+1

Ich glaube, Sie die System.out.printin Anweisung innerhalb der while-Schleife setzen sollte die Zählungen nach jeder Zeile angezeigt werden soll. Sie müssen möglicherweise auch den Inhalt der Datei, da es schwierig wäre, dies ohne es zu beheben. – ProgrammersBlock

Antwort

1
 BufferedReader file3 = new BufferedReader(new FileReader("sonnet1-b.txt")); 

     int even = 0; 
     int odd = 0; 
     String lines; 
     String processedLine = ""; 

// Es ist unklar, ob diese Variable einen größeren Zweck in Zukunft

 ArrayList<String> words = new ArrayList<>(); 

     while ((lines = file3.readLine()) != null) { 
      processedLine = lines.replaceAll("'", "").replaceAll("[^a-zA-Z]", " ").replaceAll("()+", " "); 

// ich Worte entfernt hier haben und verändert die Aufteilung auf den Raum zu teilen. Wenn ich Ihren ursprünglichen Code ausführte, kam der gesamte Text als eine Zeile herein. Ich denke, Ihr ursprüngliches Problem könnte in diesem Bereich liegen. Sie müssen die Länge der Wörter erhalten. Sie sind original Split Param nur Leerzeichen in jedem.

// Basierend auf Ihrer Beschreibung müssen Sie die Länge von str1 überprüfen, nicht jeder.

   if (!(str1.length() % 2 == 0)) { 
        odd++; 
       } else { 
        even++; 
       } 
      } 
     }        
     System.out.println("There were " + even + " even words, and " + odd + " odd words"); 

gab es 58 sogar Wörter und 56 ungerade Wörter

+1

Es ist schwer zu verstehen, was Sie denken, ist das Problem auf den zweiten Text. Ich vermute, dass die Ausgabe mehr Wörter gezählt hat, als Sie erwartet haben. Das Problem könnte sein, dass Welt ohne Ende als 3 Wörter gezählt wird. SO ... verarbeiteteLinie = Linien.ReplaceAll ("'", "") .ReplaceAll ("-", ""). ReplaceAll ("[^ a-zA-Z]", "") .replaceAll ("() + "," "); – ProgrammersBlock

Verwandte Themen