在 User obj3 = new User(); 之后无法输入任何内容;部分

Can't input anything after the User obj3 = new User(); part

我无法在 User obj3 部分后输入任何内容。任何人都可以帮我解决它的问题吗?我已经不知道该怎么办了。

public class test {

    public static void main(String[] args) {
        
        Scanner input = new Scanner (System.in);
        Administrator obj = new Administrator();
        
        
        System.out.print("Enter user ID: ");
        String userID = input.nextLine();
        
        System.out.print("Enter user password: ");
        int userPassword= input.nextInt();
        
        System.out.print("Enter user Phone Number: ");
        long phoneNo = input.nextLong();
        
        Administrator obj1 = new Administrator(userID, userPassword);
        Administrator obj2 = new Administrator(userID, userPassword, phoneNo);
        
        User obj3 = new User();
        
        System.out.println("ID : ");
        String ID = input.nextLine();
        
        System.out.println("Password : ");
        int pass = input.nextInt();
        
        User obj4 = new User(ID,pass);
        
        
        if (userID == ID && userPassword==pass){
            System.out.print("Login succesfully!");
        }
       
    }
    
}

您使用扫描仪的方式似乎有问题。我自己尝试 运行 这个(用户和管理员被注释掉),它跳过了 ID: Password: 输入。

Scanner 有一些问题。其中之一是 nextLong() 不会从一行中获取所有输入,只会获取它找到的第一个 long,由空格分隔。这意味着当您调用 nextLine() 时,扫描仪仍在上一行。当您获取 phone 号码时,它只会获取在线内容的剩余部分。

解决此问题的最简单方法是删除所有 nextInt()nextLong(),并用 nextLine() 替换它们。完成后,使用 Integer.parseInt() 将从 nextLine() 输出的字符串转换为整数,或使用 Long.parseLong() 转换为长整数。

此外,您正在这样比较字符串。

if (userID == ID && userPassword==pass)

如果你这样做可能对你更好。

if (userID.equals(ID) && userPassword==pass)

请记住,.equals() 是比较字符串(或任何类型的对象)的方式。