我有一个问题和使用字符串的问题。
我遇到的问题是在文本文件中读取一行。假设我的.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”,并且工作正常。但是,如果我将一些随机单词作为输入并且找不到它,我该怎么做才能继续将其添加到新文件中?我可以弄清楚如何写入文件,我想...我只是无法正常退出循环。
答案 0 :(得分:3)
使用equals()
来比较字符串,而不是==
:
if (input.equals(fileWord))
关于你的第二个问题,最简单的方法是阅读整行,然后split()
。那会给你一个两元素的字符串数组。您可以使用第一个元素进行比较,如果匹配则返回第二个元素:
String[] words = line.split("\\s+", 2);
// words[0] will contain "hello"
// words[1] will contain "goodbye"
答案 1 :(得分:1)
您需要使用equals(),而不是==来比较两个String的相等性。仅当双方都引用完全相同的对象时,使用== with objects才返回true(具有相同内容的两个字符串仍然是两个不同的String对象)。
答案 2 :(得分:0)
将字符串与.equals()
方法进行比较:
input.equals(fileWord)
对于具有多个单词的行,使用split()
method将它们分成一个数组,然后将input
与每个数组元素进行比较。 (如果匹配则突破循环)。
答案 3 :(得分:0)
不要在字符串中使用==。使用String.equals。
==比较对象的id;不是内容。