我正在编写此代码以查看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{
}
答案 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
语句的下一行,因此您只检查偶数行。