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

m4pnthwp  于 2021-07-11  发布在  Java
关注(0)|答案(1)|浏览(337)

我正在尝试验证多个扫描仪输入与配对 If-Else 在单个while循环中阻塞。我感兴趣的行为是对当前的验证 If-Statement 请求用户重新输入输入或转到后续的输入/选择块。
现在,我正在使用 continue 返回while循环开头的关键字。用一个 do...while 你觉得这更合适吗?谢谢您。

  1. while (count < numCars) {
  2. System.out.println("Enter car type");
  3. String name = scanner.next();
  4. if (name.matches(".*\\d")) {
  5. System.out.println("Name entry cannot contain numbers");
  6. continue;
  7. } else {
  8. // re-enter name
  9. }
  10. System.out.println("Enter max speed");
  11. int maxSpeed = scanner.nextInt();
  12. if (maxSpeed == 100 || maxSpeed > 100) {
  13. System.out.println("Max speed is not valid. Please re-enter");
  14. continue;
  15. } else {
  16. // re-enter age
  17. count++;
  18. }
  19. }
vdzxcuhz

vdzxcuhz1#

每个块的功能都可以通过 while 而不是 if-else 声明。我还以更好/更有组织的方式构建了您的代码:

  1. int count = 0, numCars = 3; // Example value
  2. String name;
  3. int maxSpeed;
  4. while (count < numCars) {
  5. System.out.print("Enter car type: ");
  6. name = scanner.next();
  7. scanner.nextLine(); // Cleans the buffer
  8. while (name.matches(".*\\d")) {
  9. System.out.println("Name entry cannot contain numbers.");
  10. System.out.print("Enter car type: ");
  11. name = scanner.next();
  12. scanner.nextLine(); // Cleans the buffer
  13. }
  14. System.out.print("Enter max speed: ");
  15. maxSpeed = scanner.nextInt();
  16. while (maxSpeed >= 100) {
  17. System.out.println("Max speed is not valid. Please re-enter.");
  18. System.out.print("Enter max speed: ");
  19. maxSpeed = scanner.nextInt();
  20. }
  21. count++;
  22. }
展开查看全部

相关问题