我正在处理类项目的密码登录部分。没有什么花哨。用户或角色将是int,密码是String。我现在只是使用简单加密。我遇到的问题是在读取文件时输入输入不匹配。我过去做过类似的事情,要求我阅读整数和字符串并且没有任何问题。但我无法弄清楚在这种情况下出了什么问题。任何有关我为什么会收到此错误的帮助将不胜感激。我正在使用while(inputStream.hasNextLine())
然后阅读int
,然后阅读String
我尝试hasNextInt
和hasNext
并继续收到同样的错误。
public void readFile(){
Scanner inputStream = null;
try {
inputStream = new Scanner (new FileInputStream("login.txt"));
}catch (FileNotFoundException e) {
e.printStackTrace();
}
if(inputStream != null){
while (inputStream.hasNextLine()){
int luser = inputStream.nextInt();
String lpass = inputStream.nextLine();
newFile[count] = new accessNode(luser, lpass);
count ++;
}
inputStream.close();
}
}
答案 0 :(得分:1)
尝试将其作为String读取并将字符串转换为int
while (inputStream.hasNextLine()) {
Integer luser = Integer.parseInt(inputStream.nextLine());
String lpass = inputStream.nextLine();
newFile[count] = new accessNode(luser, lpass);
count++;
}
但您需要确保您的文件的数据格式如下所示
12342
password
答案 1 :(得分:1)
如果不知道你得到的是什么错误,很难说,但我的猜测是因为你没有读完整个文件。
您的文件可能如下所示:
1\r\n
password\r\n
当你调用nextInt()时,它会读取int,但是没有超过第一个\ r \ n,所以当你调用nextLine()时它会读到行尾,所以你得到的只是\ r \ n \ n。您需要阅读第一个\ r \ n,然后阅读密码。
尝试
int luser = inputStream.nextInt();
inputStream.nextLine();
String lpass = inputStream.nextLine();
newFile[count] = new accessNode(luser, lpass);