java - 带有“do-while 循环”的“If”条件?
问题描述
我有这种方法,它要求用户输入多个输入,并根据这 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");
}
}
推荐阅读
- json - 在 Angular 8 的构建期间合并两个配置文件
- c# - 计算不为空并输入到表中的行数
- javascript - 如何将文件夹路径绑定到 vuetify v-text-box?
- powershell - 如何将“y”传递给使用 PowerShell Start-Process 启动的 pscp 进程?
- java - 如何将下面的字符串转换为地图列表?
- directx - MediaFoundation SinkWriter:启用 MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS 会导致 WriteSample 失败并出现 E_FAIL 错误
- node.js - 如何在节点 js 中安排作业?
- unity3d - UNITY_ARCore : localEulerAngles 总是给出 0 值
- c - 将字符串转换为 32 位 int(有符号或无符号)并检查范围错误
- python - Python,Pandas:根据列值合并某些行的总和