我正在尝试编写一个程序,该程序将接受用户输入(一长串字符消息),存储消息并搜索文本文件以查看这些单词是否出现在文本文件中。我遇到的问题是我只能读取消息的第一个字符串并将其与文本文件进行比较。例如,如果我输入“学习”;文本文件中的一个单词,我将得到一个结果,显示在文件中找到了该单词。但是,如果我输入“learning is”,即使“is”也是文本文件中的单词,它仍然只会将学习返回为文件中找到的单词。我的程序似乎无法读取空白区域。所以我想我的问题是,如何增强我的程序来执行此操作并读取文件中的每个单词?我的程序是否也可以读取从用户处获取的原始消息中的每个单词(无论是否带有空格),并将其与文本文件进行比较?
谢谢
import java.io.*;
import java.util.Scanner;
public class Affine_English2
{
public static void main(String[] args) throws IOException
{
String message = "";
String name = "";
Scanner input = new Scanner(System.in);
Scanner scan = new Scanner(System.in);
System.out.println("Please enter in a message: ");
message = scan.next();
Scanner file = new Scanner(new File("example.txt"));
while(file.hasNextLine())
{
String line = file.nextLine();
for(int i = 0; i < message.length(); i++)
{
if(line.indexOf(message) != -1)
{
System.out.println(message + " is an English word ");
break;
}
}
}
}
}
最佳答案
我建议您首先处理该文件并构建一组合法的英语单词:
public static void main(String[] args) throws IOException {
Set<String> legalEnglishWords = new HashSet<String>();
Scanner file = new Scanner(new File("example.txt"));
while (file.hasNextLine()) {
String line = file.nextLine();
for (String word : line.split(" ")) {
legalEnglishWords.add(word);
}
}
file.close();
接下来,获取用户的输入:
Scanner input = new Scanner(System.in);
System.out.println("Please enter in a message: ");
String message = input.nextLine();
input.close();
最后,将用户的输入拆分为 token 并检查每个 token 是否是合法单词:
for (String userToken : message.split(" ")) {
if (legalEnglishWords.contains(userToken)) {
System.out.println(userToken + " is an English word ");
}
}
}
}
关于java - 用 Java 编写一个程序来读取用户的多个字符串并与文本文件进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43201795/