我正在尝试让我的代码读取文本输入并将其与“userInfo.txt”文件中的文本进行比较。 我想我做到了这一点;但是,它不输出比较结果。
请检查下面的代码:
String line = "";
String data = "";
boolean result = false;
BufferedReader inFile = new BufferedReader (new FileReader ("userInfo.txt"));
try{
while((line = inFile.readLine()) != null)
data += "\n" + line;
inFile.close();
} catch(Exception x){};
String [] allData = {data}; // saving the txt inside allData
System.out.println("Enter UserName: ");
String userName = kb.nextLine();
System.out.println("Enter Password: ");
String pass = kb.nextLine();
try{
//read user name and password then compairing it to the user and pass insde the file
for(int i = 0; i < allData.length - 1; i++)
{// checking userName
if(allData[i].equalsIgnoreCase(userName))
result = true;
else
System.out.println(result +" Wrong userName");
// checking password
if(allData[i + 1].equals(pass))
System.out.println("Welcome " + userName);
else
System.out.println( result +" Wrong password");
}
} catch (Exception x){};
答案 0 :(得分:1)
因为您的数组allData
只包含1个字符串,这是您的txt文件的全部内容。
更改
String [] allData = {data};
到
String [] allData = data.Split("\\n");
答案 1 :(得分:0)
我认为问题是在这一行上创建的:
String [] allData = {data};
在该行中,您将创建一个包含单个元素的数组,该元素包含文件的整个文本。
相反,请考虑做这样的事情:
List<String> allData = new ArrayList<String>();
try{
while((line = inFile.readLine()) != null) {
allData.append(line);
}
} catch(Exception x){}
finally {
inFile.close();
}
然后您可以使用allData.get(i)来获取您正在寻找的行。
顺便说一下,代码审查的几个注释:
if
,while
等。这样可以让您更轻松地阅读,也不太可能在以后出现错误,以确定某些内容是否会被执行块的一部分与否。catch(Exception e) {}
)。它会使调试变得更加困难,因为你不知道自己是犯了错误还是输入错误。inFile.close()
属于finally
块。这是因为你想要关闭你的文件句柄,即使你得到一个导致你突破try块的异常。