我想在程序继续之前验证用户输入。例如:
变量String名称。该程序显示'输入姓名'如果用户键入数字而不是字符串,则应弹出一条消息,并使用户将字符串分配给名称。
这是我到目前为止所做的:
System.out.println("Enter name");
String name = input.nextLine();
我尝试过try / catch但是没有用。我尝试使用
if(input.hasNextInt()){System.out.println("Type in a string!");}
但是这会继续通过该计划并仍然为一个号码指定一个号码'。它不会给用户第二次机会将字符串分配给' name'
答案 0 :(得分:0)
这是让你开始使用正则表达式的东西。它仅检查String
与A-Z
和a-z
之间的字符。看看当你尝试输入“FirstName LastName”时会发生什么,看看你是否可以弄清楚如何修复它。
Scanner input = new Scanner(System.in);
String name;
while(true){
System.out.println("Enter name");
name = input.nextLine();
if (name.matches("[A-Za-z]+")){
break;
}else{
System.out.println("Please enter only letters");
}
}
System.out.println("Name selected: "+name);
括号末尾的加号检查您是否至少一个字符。因此,如果您输入空白名称,它将转到else
。
答案 1 :(得分:0)
使用String matches()方法可以非常简单地进行数字检查。此方法告知字符串是否与给定的正则表达式匹配。
String name = "Shrek";
if (name.matches(".*\\d+.*")) {
// Do whatever you want to do if the name contains a number
}
答案 2 :(得分:-1)
尝试此解决方案,当用户输入无效内容时,弹出窗口验证输入。
public class Test {
static String name;
public static void main(String[] args) {
final JFrame parent = new JFrame();
parent.pack();
parent.setVisible(false);
name = JOptionPane.showInputDialog(parent,
"Enter name", null);
while (true) {
if (name.matches("[A-Za-z]+")) {
break;
} else {
name = JOptionPane.showInputDialog(parent,
"Please enter only letters", null);
if (name.matches("[A-Za-z]+"))
break;
}
}
System.out.println("Name selected: " + name);
}
}