将用户的字符串输入限制为字母和数字值

Sac*_*hin 3 java validation java.util.scanner

基本上,我的情况要求我检查键盘用户输入定义的字符串是否仅在一种情况下是字母字符而在另一种情况下只是数字.这是用Java编写的.

我目前的代码:

switch (studentMenu) {
                case 1: // Change all four fields
                    System.out.println("Please enter in a first name: ");

                    String firstNameIntermediate = scan.next();
                    firstName = firstNameIntermediate.substring(0,1).toUpperCase() + firstNameIntermediate.substring(1);
                    System.out.println("Please enter in a middle name");
                    middleName = scan.next();
                    System.out.println("Please enter in a last name");
                    lastName = scan.next();
                    System.out.println("Please enter in an eight digit student ID number");
                    changeID();
                    break;
                case 2: // Change first name
                    System.out.println("Please enter in a first name: ");
                    firstName = scan.next();
                    break;
                case 3: // Change middle name
                    System.out.println("Please enter in a middle name");
                    middleName = scan.next();
                    break;
                case 4: // Change last name
                    System.out.println("Please enter in a last name");
                    lastName = scan.next();
                case 5: // Change student ID:
                    changeID();
                    break;
                case 6: // Exit to main menu
                    menuExit = true;
                default:
                    System.out.println("Please enter a number from 1 to 6");
                    break;
            }
        }
    }

public void changeID() {
    studentID = scan.next();
    }
Run Code Online (Sandbox Code Playgroud)

我需要确保StudentID只是数字,每个名称段都是按字母顺序排列的.

pol*_*nts 6

java.util.Scanner已经可以检查下一个标记是否具有方法的给定模式/类型hasNextXXX.

以下是boolean hasNext(String pattern)使用正则表达式验证下一个标记仅由字母组成的示例[A-Za-z]+:

    Scanner sc = new Scanner(System.in);
    System.out.println("Please enter letters:");
    while (!sc.hasNext("[A-Za-z]+")) {
        System.out.println("Nope, that's not it!");
        sc.next();
    }
    String word = sc.next();
    System.out.println("Thank you! Got " + word);
Run Code Online (Sandbox Code Playgroud)

这是一个示例会话:

Please enter letters:
&#@#$
Nope, that's not it!
123
Nope, that's not it!
james bond
Thank you! Got james

要验证下一个标记是否可以转换为数字,请int使用hasNextInt()然后nextInt().

相关问题