在 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()
是比较字符串(或任何类型的对象)的方式。
我无法在 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()
是比较字符串(或任何类型的对象)的方式。