代码在txt文件中找不到字符串。我的代码有什么问题?

时间:2011-08-01 20:24:32

标签: java file-io while-loop

我正在编写此代码以查看txt文件,并找到一个用户输入的字符串。我的txt文件包含这样的行(此信息稍后会很重要):

第一行 - 空白。 第二行 - 伊丹 第三行 - yosi

现在,如果用户输入“idan”作为用户(没有“”),代码将找到它。如果用户输入“yosi”,它将找不到它。这就像我的代码只读第二行。我是编程新手,这对我学习如何读写文件只是一种习惯,请耐心等待。

这里是代码(有一个catch和else语句,但是由于长度原因它们没有出现):

    //Search for the specific profile inside.
        try{        
            BufferedReader br = new BufferedReader(new FileReader("d:\\profile.txt"));
            System.out.println("Searching for your Profile...");


            int linecount = 0;
            String line;
            while (br.readLine() !=null){
                linecount++;

                if(userName.contentEquals(br.readLine())){
                    System.out.println("Found, " + userName + " profile!");
                    break;
                }
                else{

                }

3 个答案:

答案 0 :(得分:2)

问题在于:

*if(userName.contentEquals(br.readLine())){* 

您正在阅读其他内容。您会发现它会根据您的实现读取所有其他行。这是第2,4,6行等

答案 1 :(得分:2)

问题出现在以下地方:

if(userName.contentEquals(br.readLine()))

您不需要再次阅读,因为您已经在while循环中阅读了它:

while (br.readLine() !=null)

所以,你基本上读取了line1(对它不做任何事情),然后读取line2(用它做一些事情),然后重复进程。

答案 2 :(得分:1)

你想做点什么     ...     字符串行;     while((line = br.readLine())!= null){         ...     }

BufferedReader.readLine()的每次调用都会从文件中读取下一个可用行。由于您在while语句中读取了一行并阅读了if语句的下一行,因此您只检查偶数行。