java - 当 while 语句为真时执行代码,非用户必须输入新的输入
问题描述
您好(我是 Java 和编程新手)。我正在尝试制作一个 while 循环。如果用户输入了一个整数,则执行代码。如果用户没有输入整数,则用户必须输入输入,直到输入为真。
我试着这样做:
Scanner input = new Scanner(System.in);
System.out.println("Wat is jouw gewicht in kg op aarde?");
int gewicht = input.nextInt();
while (input.hasNextInt ()) {
System.out.println("Ik heb informatie over de volgende planeten: 1. Venus 2. Mars 3. Jupiter \n 4. Saturn 5. Uranus 6. Neptune");
//Vraag op welke planeet hij wilt boxen
System.out.println("Op welk planeet ga je boksen?");
int planeetnummer = input.nextInt();
if (planeetnummer == VENUS) {
System.out.println("Jou gewicht op Venus is: " + gewicht * 0.78 + " kg");
}
if (planeetnummer == MARS) {
System.out.println("Jou gewicht op Mars is: " + gewicht * 0.39 + " kg");
}
if (planeetnummer == JUPITER) {
System.out.println("Jou gewicht op Jupiter is: " + gewicht * 2.65 + " kg");
}
if (planeetnummer == SATURN) {
System.out.println("Jou gewicht op Saturn is: " + gewicht * 1.17 + " kg");
}
if (planeetnummer == URANUS) {
System.out.println("Jou gewicht op Uranus is: " + gewicht * 1.05 + " kg");
}
if (planeetnummer == NEPTUNE) {
System.out.println("Jou gewicht op Neptune is: " + gewicht * 1.23 + " kg");
}
}
所以是的,如果用户输入一个整数,它应该执行代码,如果不是,用户必须输入另一个输入,直到它是一个整数。但是当我运行我的代码并输入一个整数时,代码没有执行,我不知道为什么?任何人都可以帮助我,这样这个while循环会起作用吗?
解决方案
您可以Enum
使用行星的属性定义一个:
enum Planet {
VENUS(1, "Venus", 0.78),
MARS(2, "Mars", 0.39),
JUPITER(3, "Jupiter", 2.64),
SATURN(4, "Saturn", 1.17),
URANUS(5, "Uranus", 1.05),
NEPTUNE(6, "Neptune", 1.23);
private final int number;
private final String name;
private final double gravity;
Planet(int number, String name, double gravity) {
this.number = number;
this.name = name;
this.gravity = gravity;
}
public String getName() {
return name;
}
public double getGravity() {
return gravity;
}
public static Planet parseNumber(int number) {
for (Planet planet : values())
if (planet.number == number)
return planet;
throw new EnumConstantNotPresentException(Planet.class, String.valueOf(number));
}
}
然后您的客户端代码可能如下所示:
public static void main(String... args) {
try (Scanner input = new Scanner(System.in)) {
System.out.println("Wat is jouw gewicht in kg op aarde?");
int gewicht = input.nextInt();
while (input.hasNext()) {
System.out.println("Ik heb informatie over de volgende planeten: 1. Venus 2. Mars 3. Jupiter");
System.out.println("4. Saturn 5. Uranus 6. Neptune");
System.out.println("Op welk planeet ga je boksen?");
Planet planet = Planet.parseNumber(input.nextInt());
System.out.format("Jou gewicht op %s is: %f kg\n", planet.getName(), gewicht * planet.getGravity());
}
}
}
推荐阅读
- dotnetnuke - DotNetNuke 9 中最佳实践 MVC 模块示例
- javascript - 如何撤消“this.onclick=null”?如何将javascript onclick功能恢复到div?
- java - Android Searchview在使用ListView点击项目时过滤错误
- amazon-web-services - 传输 Amazon EC2 实例时主机名和 IP 地址发生变化
- c++ - constexpr:gcc 比 clang 更努力地评估 constexpr
- ffmpeg - ffmpeg 提取帧并根据 exif 或 txt 中每个提取帧的创建时间获取时间戳
- angular - Angular Material MatPaginator 无法翻译
- python-3.x - 尝试使用 GEKKO OPTIMIZER 时“找不到与指定签名和转换匹配的循环以进行 ufunc 解决”
- python-3.x - 使用 Pandas 将名称分隔为名字和姓氏
- python - 从列中的文本中提取国家名称以创建另一列