简体   繁体   English

如何使用扫描仪读取文本文件

[英]How to read text file using scanner

Im trying to read text from a file and compare it to user input.我试图从文件中读取文本并将其与用户输入进行比较。 But when I run it I can get an error that reads.但是当我运行它时,我会收到一个错误消息。 I don't know what's wrong any help will be appreciated!我不知道出了什么问题,任何帮助将不胜感激!

Exception in thread "main" java.lang.IllegalStateException: Scanner closed at java.base/java.util.Scanner.ensureOpen(Scanner.java:1150) at java.base/java.util.Scanner.next(Scanner.java:1573) at java.base/java.util.Scanner.nextInt(Scanner.java:2258) at java.base/java.util.Scanner.nextInt(Scanner.java:2212) at test123.main(test123.java:32)线程“main”中的异常 java.lang.IllegalStateException:扫描仪在 java.base/java.util.Scanner.ensureOpen(Scanner.java:1150) at java.base/java.util.Scanner.next(Scanner.java: 1573) 在 java.base/java.util.Scanner.nextInt(Scanner.java:2258) 在 java.base/java.util.Scanner.nextInt(Scanner.java:2212) 在 test123.main(test123.java:32) )

import java.util.Scanner;
import java.io.*;

public class test123 {
    public static void main(String[] args) throws IOException {
        Scanner sc1 = new Scanner(System.in);

        System.out.println("Please enter correct credentials to log in");
        System.out.println("Username: ");
        System.out.println("Password: ");
        String userName = sc1.nextLine();
        String passWord = sc1.nextLine();

        File inFile = new File("employee.txt");

        Scanner sc = new Scanner(inFile);
        String uName = sc.nextLine();
        String pWord = sc.nextLine();

        sc.close();

        if (userName.equals(uName) && passWord.equals(pWord)) {
            System.out.println("Welcome " + userName + "!");
            System.out.println("Menu: ");
            System.out.println("\t1) Account");
            System.out.println("\t2) Payroll");
            System.out.println("\t3) Attendance Report");
            System.out.println("\t4) Service Desk");
            int answer = sc.nextInt();

            switch (answer) {

            case 1:
                System.out.print("Welcome to Account!");
                break;
            case 2:
                System.out.print("Welcome to Payroll!");
                break;
            case 3:
                System.out.print("Welcome to Attendance Report!");
                break;
            case 4:
                System.out.print("Welcome to Service Desk!");
                break;
            default:
                System.out.print("Enter correct menu option");
            }
        } else {
            System.out.println("Sorry, you entered invalid credentials. Try again. ");
        }
    }
}

You are closing it:你正在关闭它:

sc.close();

and then try to read from it:然后尝试从中读取:

   if(userName.equals(uName) && passWord.equals(pWord)) 
      {
          System.out.println("Welcome " + userName + "!");
          System.out.println("Menu: ");
          System.out.println("\t1) Account");
          System.out.println("\t2) Payroll");
          System.out.println("\t3) Attendance Report");
          System.out.println("\t4) Service Desk");
          int answer = sc.nextInt(); //here



           switch (answer)  {

              case 1:
                  System.out.print("Welcome to Account!");
                  break;
              case 2:
                  System.out.print("Welcome to Payroll!");
                  break;
              case 3:
                  System.out.print("Welcome to Attendance Report!");
                  break;
              case 4:
                  System.out.print("Welcome to Service Desk!");
                  break;
              default:
                  System.out.print("Enter correct menu option");
       }
   }

        else 
      {
          System.out.println("Sorry, you entered invalid credentials. Try again. ");
     }

Im trying to read text from a file and compare it to user input.我试图从文件中读取文本并将其与用户输入进行比较。 But when I run it I can get an error that reads.但是当我运行它时,我会看到一条错误消息。 I don't know what's wrong any help will be appreciated!我不知道出了什么问题,我们将不胜感激!

Exception in thread "main" java.lang.IllegalStateException: Scanner closed at java.base/java.util.Scanner.ensureOpen(Scanner.java:1150) at java.base/java.util.Scanner.next(Scanner.java:1573) at java.base/java.util.Scanner.nextInt(Scanner.java:2258) at java.base/java.util.Scanner.nextInt(Scanner.java:2212) at test123.main(test123.java:32)线程“主”中的异常java.lang.IllegalStateException:扫描程序在java.base / java.util.Scanner.next(Scanner.java: 1573)在java.base / java.util.Scanner.nextInt(Scanner.java:2258)在java.base / java.util.Scanner.nextInt(Scanner.java:2212)在test123.main(test123.java:32 )

import java.util.Scanner;
import java.io.*;

public class test123 {
    public static void main(String[] args) throws IOException {
        Scanner sc1 = new Scanner(System.in);

        System.out.println("Please enter correct credentials to log in");
        System.out.println("Username: ");
        System.out.println("Password: ");
        String userName = sc1.nextLine();
        String passWord = sc1.nextLine();

        File inFile = new File("employee.txt");

        Scanner sc = new Scanner(inFile);
        String uName = sc.nextLine();
        String pWord = sc.nextLine();

        sc.close();

        if (userName.equals(uName) && passWord.equals(pWord)) {
            System.out.println("Welcome " + userName + "!");
            System.out.println("Menu: ");
            System.out.println("\t1) Account");
            System.out.println("\t2) Payroll");
            System.out.println("\t3) Attendance Report");
            System.out.println("\t4) Service Desk");
            int answer = sc.nextInt();

            switch (answer) {

            case 1:
                System.out.print("Welcome to Account!");
                break;
            case 2:
                System.out.print("Welcome to Payroll!");
                break;
            case 3:
                System.out.print("Welcome to Attendance Report!");
                break;
            case 4:
                System.out.print("Welcome to Service Desk!");
                break;
            default:
                System.out.print("Enter correct menu option");
            }
        } else {
            System.out.println("Sorry, you entered invalid credentials. Try again. ");
        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM