Java while语句为true时执行代码,当然用户必须键入新的输入
您好(我是Java和编程新手)。我正在试着做一个while循环。如果用户输入了整数,请执行代码。如果用户未键入整数,则用户必须键入输入,直到输入为真 我试着这样做:Java while语句为true时执行代码,当然用户必须键入新的输入,java,while-loop,Java,While Loop,您好(我是Java和编程新手)。我正在试着做一个while循环。如果用户输入了整数,请执行代码。如果用户未键入整数,则用户必须键入输入,直到输入为真 我试着这样做: Scanner input = new Scanner(System.in); System.out.println("Wat is jouw gewicht in kg op aarde?"); int gewicht = input.nextInt(); while (inpu
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循环工作吗?您必须在写入数字后按“回车”按钮-这就是您通知程序读取输入的方式 编辑 下面是一个代码,如果用户要键入一封信,它将显示一条错误消息
Scanner input = new Scanner(System.in);
System.out.println("Wat is jouw gewicht in kg op aarde?");
int gewicht = 0;
try {
gewicht = new Integer(input.next());
} catch (NumberFormatException e) {
System.out.println("please enter an integer");
}
while (input.hasNext()) {
int planeetnummer = 0;
try {
planeetnummer = new Integer(input.next());
} catch (NumberFormatException e) {
System.err.println("please enter an integer");
continue;
}
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?");
switch (planeetnummer) {
case 1:
System.out.println("Jou gewicht op Venus is: " + gewicht * 0.78 + " kg");
break;
case 2:
System.out.println("Jou gewicht op Mars is: " + gewicht * 0.39 + " kg");
break;
case 3:
System.out.println("Jou gewicht op Jupiter is: " + gewicht * 2.65 + " kg");
break;
case 4:
System.out.println("Jou gewicht op Saturn is: " + gewicht * 1.17 + " kg");
break;
case 5:
System.out.println("Jou gewicht op Uranus is: " + gewicht * 1.05 + " kg");
break;
case 6:
System.out.println("Jou gewicht op Neptune is: " + gewicht * 1.23 + " kg");
break;
}
}
input.close();
你可以用回避
public static void main(String[] args) {
inputNumber();
}
public static void inputNumber() {
Integer number = null;
try {
System.out.println("type number");
number = new Scanner(System.in).nextInt();
} catch (Exception e) {
inputNumber();
}
//execute code
}
我在代码中添加了一些注释以便于理解。那么分析一下这个,
Scanner input = new Scanner(System.in);
System.out.println("Wat is jouw gewicht in kg op aarde?");
int gewicht;
//while weight is integer
while (true) {
try {
gewicht = Integer.parseInt(input.nextLine());
break;
} catch (NumberFormatException nfe) {
System.out.print("Try again: ");
}
}
//add break for ending this while loop !!!!!!!!!
while (true) {
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;
//while input is integer
while (true) {
try {
planeetnummer = Integer.parseInt(input.nextLine());
break;
} catch (NumberFormatException nfe) {
System.out.print("Try again: ");
}
}
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");
}
}
您可以使用planets的属性定义一个
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());
}
}
}
您的代码没有被执行,因为
while(input.hasNextInt())
循环只有在用户键入int时才会执行,否则程序将结束
试着使用下面的代码
Scanner sc = new Scanner(System.in);
while (true) {
if(sc.hasNextInt()) {
int input = sc.nextInt();
// your code goes here
} else {
sc.next();
}
}
什么是金星或其他?Enum或whatelse?这些应该是
int
常量,可以通过=
进行比较。但是让我们看看OP会说什么,它们是最终的整数,但这并不重要,我只想在用户输入了输入后执行代码。我是说我建议你写一个函数intgetInput()
或者类似的东西。这将帮助你专注于你想要的单一任务。现在,您可以了解如何检测用户是否键入了有效的数字。我相信frodo希望在应用程序仅处理数字时处理无效的输入,例如字母。如果用户输入错误的输入次数足够多,程序将崩溃。