我希望我的程序仅接受字符串并在用户输入无效时提示消息。
import java.util.Scanner;
public class Details{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String lastname;
String firstname;
String middlename;
System.out.print("Enter Number of passenger : ");
int passenger = input.nextInt();
for(int x = 0 ; x < passenger ; x++){
do{
System.out.print("\nEnter Lastname :");
lastname = input.nextLine().trim();
if(lastname.equals("") || lastname.equals(" "))
{
System.out.print("\nEnter Neccessary Details");
}
} while(lastname.isEmpty());
do{
System.out.print("\nEnter Firstname : ");
firstname = input.nextLine();
if(firstname.equals("") || firstname.equals(" "))
{
System.out.print("\nEnter Neccessary Details");
}
} while(firstname.isEmpty());
do{
System.out.print("\nEnter Firstname : ");
middlename = input.nextLine();
if(middlename.equals("") || middlename.equals(" "))
{
System.out.print("\nEnter Neccessary Details");
}
}while(middlename.isEmpty());
}//end of forloop
}
}
我已经尝试过这段代码,起初它可以工作,但从长远来看它会显示逻辑错误。 并给我一个类似这样的输出。
sample output
Enter Firstname : // the problem is, it seems has already have an input
Enter Neccessary Details
Enter Firstname :
那么我该如何解决这个问题呢? 有没有其他方法来验证字符串输入?请保持简单,我只是一个初学者,谢谢
最佳答案
因为 Scanner.nextInt
方法不会读取输入中的换行符,
您需要使用 nextInt
之后的行:
int passenger = input.nextInt();
input.nextLine();
这将解决似乎已经有输入问题。
参见this了解详情。
关于java - 如何检查用户输入的内容是否不是java中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60127051/