Java ";如果;用“a”表示条件;做while循环“;?

Java ";如果;用“a”表示条件;做while循环“;?,java,Java,我有一个方法,它要求用户输入多个输入,并根据这4个值在最后创建一个对象。 不允许输入空格或只点击回车键,问题应该循环,直到满足条件 此外,每次不接受输入时,应打印消息“错误:字段不能为空”。我的do-while循环似乎工作正常,只是我不知道在哪里实现我的错误消息以使它在正确的条件下出现 提前谢谢 public void registerDog() { String name = null; do { System.out.print("Name?>

我有一个方法,它要求用户输入多个输入,并根据这4个值在最后创建一个对象。 不允许输入空格或只点击回车键,问题应该循环,直到满足条件

此外,每次不接受输入时,应打印消息“错误:字段不能为空”。我的do-while循环似乎工作正常,只是我不知道在哪里实现我的错误消息以使它在正确的条件下出现

提前谢谢

public void registerDog() {
    String name = null;
    do {
        System.out.print("Name?> ");
        name = input.nextLine();
    } while (name.trim().isEmpty());
    name = name.substring(0,1).toUpperCase() + name.substring(1).toLowerCase();
    
    System.out.print("Breed?> ");
    String breed = input.nextLine();
    breed = breed.substring(0,1).toUpperCase() + breed.substring(1).toLowerCase();

    System.out.print("Weight?> ");
    int weight = input.nextInt();

    System.out.print("Age?> ");
    int age = input.nextInt();

    Dog dog = new Dog(name, breed, age, weight);
    doggoList.add(dog);
    System.out.println("\n" + dog.getName() + " has been added to the register.\n" + dog.toString());
}

有什么原因让你坚持使用do-while循环吗?我会放弃do while,改用if语句。大概是这样的:

String name;

while (true) {
    System.out.print("Name?> ");
    name = input.nextLine();

    if (!name.trim().isEmpty()) {
        break;
    }

    System.out.println("%nError: field cannot be empty");
}
public static String getValueFromUser(String prompt) {
    String value;

    while (true) {
        System.out.print(prompt);
        value = input.nextLine();

        if (!value.trim().isEmpty()) {
            return value;
        }

        System.out.println("%nError: field cannot be empty");
    }
}
您还可以简化代码,将其转换为方法,并在每次需要用户提供值时调用它,而不是为每个值重写相同的代码。该方法可能如下所示:

String name;

while (true) {
    System.out.print("Name?> ");
    name = input.nextLine();

    if (!name.trim().isEmpty()) {
        break;
    }

    System.out.println("%nError: field cannot be empty");
}
public static String getValueFromUser(String prompt) {
    String value;

    while (true) {
        System.out.print(prompt);
        value = input.nextLine();

        if (!value.trim().isEmpty()) {
            return value;
        }

        System.out.println("%nError: field cannot be empty");
    }
}

好吧,按照您设计代码的方式,每个字段都需要一个
do-while
循环。可能应该使用一个方法为名称和品种返回字符串值,这样while循环就不会无处不在了。@arundeepchohan谢谢,我已经在我的答案中添加了它。我尝试了一个if语句,但我记不起它是如何出错的或为什么出错的。非常感谢你的帮助!!