字符串问题

时间:2011-10-29 16:23:54

标签: java string

我有一个问题和使用字符串的问题。

我遇到的问题是在文本文件中读取一行。假设我的.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”,并且工作正常。但是,如果我将一些随机单词作为输入并且找不到它,我该怎么做才能继续将其添加到新文件中?我可以弄清楚如何写入文件,我想...我只是无法正常退出循环。

4 个答案:

答案 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;不是内容。