java - 在 while 循环内重复错误消息

标签 java loops exception

我目前正在学习 Udemy Java 类(class),并练习迄今为止所学到的知识。

我有以下简单的程序,我计划用它来让用户输入他的名字。

import java.util.Scanner;



public class Adventure {
    public static final int menuStars = 65;
    private static Scanner input = new Scanner(System.in);

    public static void main(String[] args) {
        String firstName = "";
        String lastName = "";
        boolean validName = false;
        while(!validName){
            //Entering first name
            System.out.println("Please enter your first name.");
            try {
                firstName = input.nextLine();
                if(firstName.length() == 0){
                    throw new Exception("Please enter a first name of at least 1 character.");  
                }else{
                    //Entering last name
                    System.out.println("Please enter your last name.");
                    lastName = input.nextLine();
                    if(lastName.length() == 0){
                        throw new Exception("Please enter a last name of at least 1 character");
                    }else{
                        System.out.println("You have entered " + firstName +" " + lastName);
                    }

                }
            } catch (Exception e) {
                System.out.println(e.getMessage());
                continue;
            }
            //Used to terminate loop when both first & last names are valid
            validName = true;
        }


    }
}

我想让程序在用户输入空白名称时重复错误消息,而不是从头开始重新启动整个程序。

例如,当用户输入空白的名字时,我希望程序继续重复“请输入至少 1 个字符的名字”,当用户输入空白的姓氏时,它继续重复“请输入至少 1 个字符的姓氏”,直到用户输入有效的名称。

但是,目前当用户输入空白的名字或姓氏时,我的程序将从头开始重复,而不是仅重复错误消息。

我该如何让程序重复错误消息?

最佳答案

使用一个 boolean 变量,在“请输入您的名字”时存储 true。被打印。每次打印此字符串之前检查此变量是否为 false。另外,在循环之前将其初始化为 false。同样的想法也适用于姓氏。

if(!printed)
{
  System.out.println("Please enter your first name.");
  printed=true;
}

关于java - 在 while 循环内重复错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30696010/

相关文章:

c# - 处理服务结构中的异常

java - 为什么 Primitives 的包装类没有 setter?

java - JavaFx 中 BACKSPACE 的键码事件

php - 如何停止或摆脱 Twig 循环?

java - 我的 Java 网络项目中存在循环和流控制问题

c# - 如何正确捕获多个异步方法调用中的异常?

java - JDO/DataNucleus 中 "attached"对象的含义是什么?

java - 在 Intents 中传递 FirebaseFirestore 引用

javascript - 指定 for 循环的终点有哪些优点和缺点?

java - Apache POI 无法将填充单元格格式化为数字