Ich habe diesen Code zusammengestellt, mit ein wenig Hilfe natürlich. Der Zweck davon ist, eine Benutzernachricht zu nehmen und die Textdatei zu überprüfen, um zu sehen, ob irgendwelche Wörter in der Nachricht auch in der Textdatei gefunden werden (ungefähr 50 gebräuchliche englische Wörter). Mein Problem ist, dass ich auch das Auftreten jedes Wortes in der Nachricht zählen möchte. Ich habe versucht, einen int-Zähler hinzuzufügen, aber ich bekomme Fehler, weil ich ein String-Objekt mit einer ganzen Zahl nicht zählen kann. Wenn ich nur hinzufügen, einen Zähler in:Wie man Wörter in einer Hashmap zählt
for (String userInput : message.split(" "))
{
if (legalEnglishWords.contains(userInput))
{
System.out.println(userInput + " is an English word ");
count++;
System.out.println(userInput + " occurs " + counter + " times");
}
}
erhalte ich eine Iteration für jedes Wort, das das Recht Wort Test bestanden wird, mich mit dem Ausgang verlassen, die wie
Please enter in a message:
transformers are is is this
transformers occurs 0 times
are is an English word
are occurs 1 times
is is an English word
is occurs 2 times
is is an English word
is occurs 3 times
this is an English word
this occurs 4 times
Wie Sie die Zählung zu sehen ist total falsch und ich zeige ein Wort so oft wie es in der Nachricht vorkommt. Ich möchte es nur einmal anzeigen lassen. Ich über eine & & zu der oben genannten wenn Anweisung, um zu überprüfen, ob das Wort bereits gedruckt wurde, aber ich weiß nicht, was zu setzen. Ich weiß auch nicht, wie man die einzelnen Wörter von der if-Anweisung zählt, anstatt jedes Mal zu zählen, wenn die if-Anweisung eingegeben wird. Im Grunde brauche ich ein wenig Hilfe beim Zählen einzelner Wörter, während ich nur das Wort "Englisch" einmal neben der Anzahl der Male, die es am Ende passiert ist, zeige. Ich bin immer noch ein bisschen neu in Java und verstehe alles, was in meinem Programm passiert und warum. Wenn es mir möglich ist, möchte ich versuchen, diesen Code nur zu ergänzen, um das Notwendige zu tun, anstatt eine Totalüberholung mit Dingen, die ich möglicherweise nicht verstehe. Vielen Dank euch allen!
import java.io.*;
import java.util.HashSet;
import java.util.Scanner;
public class Affine_English3
{
public static void main(String[] args) throws IOException
{
HashSet<String> legalEnglishWords = new HashSet<String>();
Scanner file = new Scanner(new File("example.txt"));
int counter = 0;
while (file.hasNextLine())
{
String line = file.nextLine();
for (String word : line.split(" "))
{
{
legalEnglishWords.add(word);
}
}
}
file.close();
Scanner scan = new Scanner(System.in);
System.out.println("Please enter in a message: ");
String message = scan.nextLine();
scan.close();
for (String userInput : message.split(" "))
{
if (legalEnglishWords.contains(userInput))
{
System.out.println(userInput + " is an English word ");
counter++;
}
System.out.println(userInput + " occurs " + counter + " times");
}
}
}
Dies ist eine Kopie meiner „Common englische Wort“ Textdatei
the he at but there of was be not use and for can
a on have all each to are from where which in by
is with line when do you his had your how that they
it i word said if this what an as or we she their
Sie müssen legalEnglishWords.equals verwenden (userinput) statt enthält. Dies wird dein Problem beheben. –
Haben Sie eine 'Map' wobei 'String' das' legalEnglishWord' und 'Integer' die Zahl ist –
@Learner' legalEnglishWords' ist eine Menge von Strings. Es wird nie einer einzelnen Saite gleich sein. –