How to repeat something until correct input is giv

2019-09-05 00:52发布

I am trying to make a application and for one part of the application I need to get a input from the user stating how many times there click their mouse in 1 second. I want the input their give to be between 1-10 and any other number given e.g. 0, -1, 11 to provide them with a error and ask them to input a valid number of 1-10. Also if the user types in any character e.g. name, A, Jo or hello, to also provide them with a error and ask them to provide the correct input. Below is what I have but it does not work.

    int OrginalMouseClick;

    String Mouseclick = JOptionPane.showInputDialog("Write down how many times you can click your mouse button in 1 second");
    int Mouseclick2 = Integer.parseInt(Mouseclick);

    while (Mouseclick2 < 1 || Mouseclick2 > 10) {
        String Mouseclick = JOptionPane.showInputDialog("Write down how many times you can click your mouse button in 1 second");   
         if (Mouseclick2 >= 1 || Mouseclick2 <10) {
             OrginalMouseClick = Mouseclick2;
             }
         }

I haven't yet implemented not to accept any characters like name, j, A, hello because I am not sure how I can do this, can someone show me please.

edit: int mouseClick;

    do {
        while (!str.hasNextInt()) {
            String str = JOptionPane.showInputDialog("Write down how many times you can click your mouse button in 1 second");
            str.next(); // this is important!
        }
        String str = JOptionPane.showInputDialog("Write down how many times you can click your mouse button in 1 second");
        mouseclick = Integer.parseInt(str);
    }
    while (mouseclick < 1 || mouseclick > 10);

2条回答
我想做一个坏孩纸
2楼-- · 2019-09-05 01:04

Use do while loop instead of while loop. This lets you run the loop atleast once before it tests the condition, where you can test the input.

String input = null;
do {
    //get the input from user
} while (isInputValid); //check input validity here

Example:

 Scanner input= new Scanner(System.in);
 do {
    System.out.println("Please enter the advertising cost: ");
    advertCost = input.nextDouble();

    } while (advertCost >= 100000 || advertCost <= 900000);

I have added link on how to validate inputs

Hope this helps!

查看更多
手持菜刀,她持情操
3楼-- · 2019-09-05 01:21

An example as requested:

int mouseClick;

do {
    String str = JOptionPane.showInputDialog("Write down how many times you can click your mouse button in 1 second");
    mouseclick = Integer.parseInt(str);
}
while (mouseclick < 1 || mouseclick > 10);
查看更多
登录 后发表回答