多个扫描仪输入:当前选择块的迭代验证

Multiple Scanner Inputs: Iterative validation of current selection blocks

我试图在单个 while 循环中使用成对的 If-Else 块验证多个扫描器输入。我有兴趣实现的行为是当前验证 If-Statement 请求用户重新输入或继续进行后续输入/选择块。

现在,我在 While 循环的开头使用 continue 关键字,returns。使用 do...while 循环会更适合这个吗?谢谢。

    while (count < numCars) {
        System.out.println("Enter car type");
        String name = scanner.next();
        if (name.matches(".*\d")) {
            System.out.println("Name entry cannot contain numbers");
            continue;
        } else {
            // re-enter name
        }
        System.out.println("Enter max speed");
        int maxSpeed = scanner.nextInt();
        if (maxSpeed == 100 || maxSpeed > 100) {
            System.out.println("Max speed is not valid. Please re-enter");
            continue;
        } else {
            // re-enter age
            count++;
    }
}

您想要的每个块的功能都可以使用 while 而不是 if-else 语句来实现。我还以 nicer/more 有条理的方式构建了您的代码:

int count = 0, numCars = 3;  // Example value
String name;
int maxSpeed;
        
while (count < numCars) {
    System.out.print("Enter car type: ");
    name = scanner.next();
    scanner.nextLine();     // Cleans the buffer
            
    while (name.matches(".*\d")) {
        System.out.println("Name entry cannot contain numbers.");
        System.out.print("Enter car type: ");
        name = scanner.next();
        scanner.nextLine();     // Cleans the buffer
    }
            
    System.out.print("Enter max speed: ");
    maxSpeed = scanner.nextInt();

    while (maxSpeed >= 100) {
        System.out.println("Max speed is not valid. Please re-enter.");
        System.out.print("Enter max speed: ");
        maxSpeed = scanner.nextInt();
    }
            
    count++;      
}