我在使用字符串方面遇到问题和疑问。
我遇到的问题是读取文本文件中的一行。假设我的 .txt 文件中有“hello”一词,我只是想验证用户是否输入了相同的内容。
.txt 文件仅包含单词“hello”
这是代码。
String fileWord;
File filename = fileOpen.getSelectedFile(); // Open the .txt file
FileReader filereader = new FileReader(filename);
BufferedReader inputFile = new BufferedReader(filereader);
String input = JOptionPane.showInputDialog("Say hello");
fileWord = inputFile.readLine();
if (input == fileWord)
System.out.println("They match!");
但是,这不起作用。我在 input 和 fileWord 上都执行了 System.out.println,它们看起来是相同的,但它们并非如此,因为 if() 语句不起作用。
另一个问题我的问题是,如果在 .txt 文件中,我有一行行“你好再见”,我该如何读取一个单词一次一行?例如,如果用户输入“hello”,则会在文本文件中找到它并返回“goodbye”。
编辑 我在我的程序中取得了进一步的进展,并遇到了另一个问题。每当用户输入一个单词时,如果在文件中找不到该单词,则假定将该单词写入新文件。在我的程序中,我使用循环来搜索文件以查找单词。当我输入文件中不存在的单词时,出现异常错误并且程序关闭。我不太清楚在哪里以及如何发现该单词不在文件中。
while (!input.equals(fileWord))
{
fileWord = inputFile.readLine();
String[] wordSplit = englishWord.split("\\s+", 2);
fileWord = wordSplit[0];
fileWord2 = wordSplit[1];
}
System.out.println("The opposite of " + fileWord + " is " + fileWord2);
此示例将在文本文件中找到“hello”并输出“goodbye”,效果很好。但是,如果我输入一些随机单词但它找不到它,我该怎么做才能继续将其添加到新文件中?我想我可以弄清楚如何写入文件......我只是无法无异常地正确退出循环。
最佳答案
使用equals()
来比较字符串,而不是==
:
if (input.equals(fileWord))
关于你的第二个问题,最简单的方法是读取整行,然后 split()
它。这将为您提供一个二元素字符串数组。您可以使用第一个元素进行比较,如果匹配则返回第二个元素:
String[] words = line.split("\\s+", 2);
// words[0] will contain "hello"
// words[1] will contain "goodbye"
关于java - 字符串问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7940093/