java将用户输入与文本文件中的字符串进行比较
我试图将用户的名字和姓氏与文本文件中的名称进行比较,如果匹配,则生成一个输出。如果名称不匹配,则程序会给出一个错误。当我运行程序时,我不断得到错误“线程中的异常”main“java.lang.ClassCastException:java.io.File无法转换为java.lang.Readable 在ReadFile。main(ReadFile.java:24)”
public class ReadFile {
public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
@SuppressWarnings("resource")
Scanner Input = new Scanner(System.in);
System.out.print("Enter First Name:");
String FirstName = Input.nextLine();
@SuppressWarnings("resource")
Scanner Input1 = new Scanner(System.in);
System.out.print("Enter Last Name:");
String LastName = Input1.nextLine();
String UserFile = "UserFile.txt";
@SuppressWarnings("resource")
//BufferedReader inputStream =new BufferedReader(new FileReader("myfile.txt"));
Scanner inputStream = new Scanner((Readable) new File(UserFile));
String line = inputStream.nextLine();
inputStream.useDelimiter("[\\r,]");
while (inputStream.hasNext())
{
//contains name
//String line = inputStream.next();
//split names
String [] arrayName = line.split(",");
String FName = arrayName[0];
String LName = arrayName[1];
if(FirstName.equals(FName) && LastName.equals(LName))
{
System.out.println("You are Logged IN");
}
else
{
System.out.println("You need to create a new account");
}
}
}
}
# 1 楼答案
异常是人类可读的-您正在尝试进行不适当的类转换,并且为您提供了带有错误的行ReadFile。爪哇:24
您可以从代码中删除此强制转换,或者开始使用语言的新功能,如Streams API、lambda、try with resources等等,如下所示
另外,如果拆分后不检查arrayName的大小,您将获得ArrayIndexOutOfBoundsException