在公共方法中运行 Java 哨兵控制的 do-while 循环

Running a Java sentinel-controlled do-while loop in public method

提问人:Sirswagger21 提问时间:5/19/2021 更新时间:5/20/2021 访问量:131

问:

我有一个方法,带有用于获取输入的参数。显然,我可以完全删除该方法并将所有内容都放在该方法中,但我正在尝试学习如何使用不同类型的方法,因此这并不是一个真正的选择。public static int payMethodinputScannermain

我的目标是让用户输入 1、2 或 3。如果他们输入其他内容,则程序会再次询问,直到用户输入 1、2 或 3。

import java.util.*;
public class test {
    public static void main(String [] args) {
        Scanner input = new Scanner(System.in);

        //User input on selection
        System.out.println("Choose 1, 2, or 3.");
        double choice;

        //Repeat until payment selection is valid choice
        choice = choiceMethod(input);

        input.close(); //Close Scanner
    }

    public static int choiceMethod (Scanner input) {
        do {
            System.out.print("Which choice would you like? ");
            if (input.nextDouble() < 1 || input.nextDouble() > 3 || input.nextDouble() != (int)input.nextDouble()) {
                System.out.println("This is not a valid option. Please choose either option 1, 2, or 3.");
            }
        } while (input.nextDouble() < 1 || input.nextDouble() > 3 || input.nextDouble() != (int)input.nextDouble());
        return (int)input.nextDouble();
    }
}

这是我不稳定的输入/输出。

Choose 1, 2, or 3.
Which choice would you like? 1

2
3
4
This is not a valid option. Please choose either option 1, 2, or 3.
5





1
1
2
Which choice would you like? 
2
3
4
5
This is not a valid option. Please choose either option 1, 2, or 3.

我尝试更改参数无济于事,所以我确定问题出在方法中。感谢帮助,TIA。

爪哇岛 java.util.scanner 做而成 哨兵

评论

4赞 Dave Newton 5/19/2021
调用逻辑表达式所需的次数与短路次数为单位。获取输入,然后通过中间变量对其进行处理,否则您需要使用任意(但有界)数量的双精度,然后该方法才能继续。input.nextDouble()

答: 暂无答案