有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    异常是人类可读的-您正在尝试进行不适当的类转换,并且为您提供了带有错误的行ReadFile。爪哇: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();
        }
    

    另外,如果拆分后不检查arrayName的大小,您将获得ArrayIndexOutOfBoundsException