首页 > 解决方案 > 当 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循环会起作用吗?

标签: javawhile-loop

解决方案


您可以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());
        }
    }
}

推荐阅读