2016-04-07 9 views
0

Hallo Ich muss die Zeilennummern finden, bei denen das längste Wort in einer Datei erscheint. Wenn es zwei oder mehr verschiedene Wörter mit der gleichen längsten Länge gibt, dann verfolgen Sie nur die erste. . Ich habe die Verfolgung des längsten Wortes getan, aber ich brauche Hilfe zu finden, was Linien das längste Wort in Dies ist mein Code, der das längste Wort findet:Finden Sie die Zeilennummern, bei denen das längste Wort in einer Datei erscheint

 while(scan2.hasNextLine()){ 
      String line = scan2.nextLine(); 
      if(line.contains(longestWord)){ 
       longestWordList.add(longestWord); 
      } 
      else{ 
       longestWordList.add(null); 
      } 
     } 
+0

Warum fügen Sie 'null' in Ihrem' else' hinzu? Und ich nehme an, dass 'längsteWortListe.add (längsteWort);' sollte 'längsteWeiseListe.add (Zeile) sein;' –

+0

Sie benötigen ein int, um die Zeilennummern zu verfolgen –

+1

Gehen Sie davon aus, dass das längste Wort gefunden wurde oder dass Sie es während dieses Prozesses zu finden? –

Antwort

1

Sie müssen den Überblick über die aktuelle Zeilennummer zu halten, die Zeilennummer des längsten Wortes und die Länge des längsten Wortes. Teilen Sie für jede Zeile die Zeile in ein Array von Wörtern auf, indem Sie Leerzeichen und Satzzeichen trennen. Sie können dies mit einem regulären Ausdruck tun. Schauen Sie sich dann jedes Wort an, wenn es länger ist als das längste Wort. Wenn ein neues längstes Wort gefunden wird, notieren Sie die aktuelle Zeilennummer und zeichnen Sie die neue längste Wortlänge auf.

int lineNumLongest = 0, lineNumCurrent = 0, longestLength = 0; 
while(scan2.hasNextLine()) { 
    lineNumCurrent++; 
    String[] words = scan2.nextLine().split("[ .?!,;:/\\\\]"); 
    for (String word : words) { 
     if (word.length() > longestLength) { 
      lineNumLongest = lineNumCurrent; 
      longestLength = word.length(); 
     } 
    } 
} 
+0

Ich habe nicht alle Interpunktionszeichen hinzugefügt, aber es ist einfach, je nach Bedarf mehr hinzuzufügen. Lassen Sie mich wissen, wenn Ihre Datei Dinge enthält, die mit diesem Algorithmus nicht funktionieren. – 4castle

+0

Ausnahme im Thread "Haupt" java.util.regex.PatternSyntaxException: Nicht geschlossene Zeichenklasse in der Nähe von Index 10 [.?!,;: \ \] ^ – iAmtheDank

+0

Whoops, nicht genug Backslashes enthalten. Jetzt behoben – 4castle

Verwandte Themen