Java 将用户输入与文本文件中的字符串进行比较
我试图将用户名和姓氏与文本文件中的名称进行比较,如果匹配,则生成一个输出。如果名称不匹配,则程序会给出一个错误。当我运行程序时,我不断得到错误“Exception in thread”main“java.lang.ClassCastException:java.io.File无法转换为java.lang.Readable 位于ReadFile.main(ReadFile.java:24)”Java 将用户输入与文本文件中的字符串进行比较,java,Java,我试图将用户名和姓氏与文本文件中的名称进行比较,如果匹配,则生成一个输出。如果名称不匹配,则程序会给出一个错误。当我运行程序时,我不断得到错误“Exception in thread”main“java.lang.ClassCastException:java.io.File无法转换为java.lang.Readable 位于ReadFile.main(ReadFile.java:24)” 您正在将文件强制转换为可读文件 Scanner inputStream = new Scanner((Re
您正在将文件强制转换为可读文件
Scanner inputStream = new Scanner((Readable) new File(UserFile));
删除它并用try-and-catch环绕语句
Scanner inputStream = null;
try
{
inputStream = new Scanner(new File(UserFile));
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
if(inputStream != null)
{
inputStream.close();
}
}
换线
Scanner inputStream = new Scanner((Readable) new File(UserFile));
到
您的文件的格式似乎与预期的不同。
改变
inputStream.useDelimiter(“[\r,]”);
致:
inputStream.useDelimiter(“\n”);
因此,您的分隔符将是换行符
此外,你正在阅读第一行,却忽略了它。这是故意的吗?如果是,则文件中至少应有两行
同时取消对该行的注释,这样您将阅读多行内容
尝试在调试器中运行它,以便查看代码中发生的情况。异常是人类可读的-您正在尝试进行不适当的类转换,并且为您提供了带错误的行。ReadFile.java:24 您可以从代码中删除此强制转换,或者开始使用语言的新功能,如Streams API、lambda、try with resources等,如下所示
try (Stream<String> stream = Files.lines(Paths.get(UserFile))) {
stream.forEach(line -> {
String[] arrayName = line.split(",");
if (arrayName.length >= 2) {
String FName = arrayName[0];
String LName = arrayName[1];
System.out.println(FirstName.equals(FName) && LastName.equals(LName)
? "You are Logged IN" : "You need to create a new account");
}
});
} catch (IOException e) {
e.printStackTrace();
}
try(Stream=Files.line(path.get(UserFile))){
stream.forEach(行->{
字符串[]arrayName=line.split(“,”);
如果(arrayName.length>=2){
字符串FName=arrayName[0];
字符串LName=arrayName[1];
System.out.println(FirstName.equals(FName)和&LastName.equals(LName)
?“您已登录”:“您需要创建一个新帐户”);
}
});
}捕获(IOE异常){
e、 printStackTrace();
}
另外,如果拆分后不检查arrayName的大小,您将获得ArrayIndexOutOfBoundsException,您意外地将此问题标记为c#。我把标签拿掉了。你为什么要麻烦演员
newscanner(新文件(“…”)
非常好。java.io.File不能强制转换为java.lang.Readable
<代码>(可读)新文件(用户文件)。。。现在有什么是不清楚的?真的,我不明白。欢迎来到2017年:我确实改变了这一点。谢谢,但我收到了另一个错误,上面写着:线程“main”java.lang.ArrayIndexOutOfBoundsException:1 at ReadFile.main(ReadFile.java:38)”@Becca中的异常,您尝试过找出这个异常的含义吗?显然不是:我确实改变了这一点。谢谢,但我得到了另一个错误,它是:线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:1位于ReadFile.main(ReadFile.java:38)
Scanner inputStream = new Scanner(new FileReader(UserFile));
//String line = inputStream.next();
try (Stream<String> stream = Files.lines(Paths.get(UserFile))) {
stream.forEach(line -> {
String[] arrayName = line.split(",");
if (arrayName.length >= 2) {
String FName = arrayName[0];
String LName = arrayName[1];
System.out.println(FirstName.equals(FName) && LastName.equals(LName)
? "You are Logged IN" : "You need to create a new account");
}
});
} catch (IOException e) {
e.printStackTrace();
}