当前位置: 首页 > 知识库问答 >
问题:

重复Java do循环直到有效输入

束福
2023-03-14

我正在创建一个Java项目,使用do-while循环从用户那里获取一个介于5到15之间的数字。在此之后,我将使用用户输入的数字创建一个正方形和三角形。

我现在只能重复我的问题。在我运行程序后,它运行良好,直到我输入一个数字,第二次提示用户输入一个数字。如果号码无效或无效,则不会打印。

我试着移动第二个“输入数字...”里面的do-loop,但那只是印有“对不起,无效”的提示。我对while循环中的case语句做了类似的操作,它运行得很好,但是我在do循环中遇到了困难。

谁能给我指明正确的方向吗?

import java.util.Scanner;
public class doLoop {

public static void main(String[] args) {
    // TODO Auto-generated method stub

    Scanner input = new Scanner(System.in);

    int number;
    int minimum = 5;
    int maximum = 15;

    System.out.print("Enter a number between " + minimum + " and " + maximum + ":" );



        do {
            number = input.nextInt();
            if (number >= minimum && number <= 15) 
                break;
            else 
                System.out.print("Sorry, invalid");
            break;
        } while (false); 
        System.out.print("\nEnter a number between " + minimum + " and " + maximum + ":" );
        number =  input.nextInt();
    }
}

共有2个答案

龙霖
2023-03-14

在您的代码中,中断和扫描输入的位置有一个逻辑错误。如果你真的想保持真实,我发现只添加一个boolean检查而不是使用break要简单得多。在下面,你可以看到我也把final,这样你就知道了,这是一个最佳实践,这个变量不应该在代码中被修改或篡改。我添加了一个布尔值,因为您希望检查do while是否为false,然后如果它通过了您所做的if语句,我们将它设置为true。

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

int number;
boolean check = false;

// Final, because they are constant through-out the program
final int minimum = 5;
final int maximum = 15;

do {
    System.out.print("Enter a number between " + minimum + " and " + maximum + ":" );
    number = input.nextInt();
    if (number >= minimum && number <= maximum) 
        check = true;
    else 
        System.out.println("Sorry, invalid");
    break;
} while (check); 


}
东方俊杰
2023-03-14

通常,在while循环中使用break被认为是一种糟糕的做法。你应该有这样的东西

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    int number;
    int minimum = 5;
    int maximum = 15;

    do{
        System.out.print("Enter a number between" + " " + minimum + " " + "and" + " " + maximum + ":" );
        number = input.nextInt();
        if (number < minimum || number > maximum) 
            System.out.print("Sorry, invalid");
    } while (number < minimum || number > maximum); 

}
 类似资料:
  • 我仍在学习java编程,请原谅我的知识不足。这可能是有史以来最简单的事情,但我一辈子都想不出更好的方法来循环checkTaskDescription方法,直到用户输入的描述低于字符限制。到目前为止,这是我能够做到的唯一方法,但它显然会重复输入对话框两次。 这是执行它的部分 这是正在执行的checkTaskDescription方法:

  • 问题内容: 我需要让用户输入一个数字以用作范围的开始,然后输入另一个数字作为范围的结束。起始编号必须为0或更大,结束编号不能大于1000。两个数字都必须被10整除。我找到了满足这些条件的方法,但是如果不满足这些条件,我的程序只会告诉用户他们的输入不正确。我是否可以对它进行编码,以便在用户输入后进行检查以确保满足条件,如果条件没有环回,请再次输入。这是我到目前为止的代码。 问题答案: 轻松做:

  • 问题内容: 我正在尝试编写一个数字猜测程序,如下所示: 我现在想做的是让if / elif / else命令序列循环执行,直到用户输入“正确”为止,即程序声明的数字大约等于用户数,但是如果我不知道用户数量,我无法想到如何实现和if语句,并且尝试使用“ while”也无效。 问题答案: 作为@Mark Byers方法的替代方法,可以使用:

  • 我需要要求用户输入一个数字作为范围的开始,然后输入另一个数字作为范围的结束。开始数必须大于等于0,结束数不能大于1000。两个数字都必须能被10整除。我已经找到了满足这些条件的方法,但是如果不满足这些条件,我的程序只会告诉用户他们的输入不正确。我是否可以对其进行编码,以便在用户输入后,它将检查以确保满足条件,如果不满足条件,则返回并再次输入。这是我目前掌握的代码。

  • 我需要用while循环修改程序,以不断提示用户输入密码。def user_input():“”从用户“”获取输入input1=input(“输入密码”)(如果长度检查(input1)!=真或字符检查(输入1)!=True:exit()elif length\u check(input1)和char\u check(input1):input2=input(“重新输入密码:”) DEFcheck_p