Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的Do while statent出现问题_Java_Do While - Fatal编程技术网

Java中的Do while statent出现问题

Java中的Do while statent出现问题,java,do-while,Java,Do While,我需要计算物体到达地面前的速度和位置 我相信除了Do while语句(我必须使用)之外,我可以处理其他所有事情。 我只需要在正确的方向上戳一下,或者至少告诉我为什么这样做:用户输入应该大于600,否则程序应该有错误消息,并要求用户重试,直到输入正确的值。 我的问题是,即使我选择700,我仍然会收到错误消息,而我不应该收到。HEIGHTTHRESHOLD是一个设置为600的公共常量。 我没有发布我的整个程序,因为我只需要这部分的指针 public static int initialPositi

我需要计算物体到达地面前的速度和位置

我相信除了Do while语句(我必须使用)之外,我可以处理其他所有事情。
我只需要在正确的方向上戳一下,或者至少告诉我为什么这样做:用户输入应该大于600,否则程序应该有错误消息,并要求用户重试,直到输入正确的值。
我的问题是,即使我选择700,我仍然会收到错误消息,而我不应该收到。HEIGHTTHRESHOLD是一个设置为600的公共常量。
我没有发布我的整个程序,因为我只需要这部分的指针

public static int  initialPosition() {
     Scanner keyboard= new Scanner (System.in);
       System.out.println("Enter the initial position (Must be over 600 feet)");
       int position = keyboard.nextInt();

       do {
             System.out.println("Error- Position is too low! Try Again");
             System.out.println("Enter the initial position "
                     + "(Must be over 600 feet)");
            keyboard.nextInt();
       break;

       }while (position>HEIGHTTHRESHOLD);
        return position;
}
尝试使用:

if(position>HEIGHTTHRESHOLD){
do {
             System.out.println("Error- Position is too low! Try Again");
             System.out.println("Enter the initial position "
                     + "(Must be over 600 feet)");
            position = keyboard.nextInt();
       break;
}
       }while (position>HEIGHTTHRESHOLD);}
while在这种情况下会更好,但是如果您需要这个…

一个
do{}while()
语句将在第一次执行时甚至不检查条件。只有在不满足条件的情况下,才会重复

只需使用
while(){}
语句

如果您的作业需要使用
do while
,我建议:

boolean postiionEntered = false;
int position
do{

    position = keyboard.nextInt();
    if(position<HEIGHTTHRESHOLD){

        System.out.println("Error- Position is too low! Try Again");
        System.out.println("Enter the initial position "      
        + "(Must be over 600 feet)");
    else{positionEntered = true;}
}
while(positionEntered == false)
return position;
boolean positionentered=false;
内部位置
做{
位置=键盘.nextInt();

如果(位置考虑阅读Oracle java教程(重点关注)

do
{
……废话
位置=键盘.nextInt();
}同时(位置<601)
//注意!只有在输入被删除时,您才继续请求输入
//小于最小值

正如利亚姆所说,循环至少执行一次。因此,您需要确保运行整个逻辑,并查看第一次和第N次将发生什么。 避免使用“break”和其他“getoutmyloop”语句,除非你真的必须这样做

在我的书中,这样的东西似乎更好:

public static int  initialPosition() {
 Scanner keyboard= new Scanner (System.in);
   System.out.println("Enter the initial position (Must be over 600 feet)");

   do {
         int position = keyboard.nextInt();
         if (position < HEIGHTTHRESHOLD) {
             System.out.println("Error- Position is too low! Try Again");
             System.out.println("Enter the initial position "
                 + "(Must be over 600 feet)");
         }

   }while (position<HEIGHTTHRESHOLD);
    return position;
public static int initialPosition(){
扫描仪键盘=新扫描仪(System.in);
System.out.println(“输入初始位置(必须超过600英尺)”;
做{
int position=keyboard.nextInt();
如果(位置<高度阈值){
System.out.println(“错误-位置太低!请重试”);
System.out.println(“输入初始位置”
+“(必须超过600英尺)”;
}

}while(position
do{…}while
;其中
{…}
块至少执行一次。因此专业提示:不要透露您正在寻求家庭作业方面的帮助。大多数“家庭作业问题”低质量和你的可能会与他们一起聚合,得到比它更多的否决权。不要把中断放在do-while循环的中间。作为写,它不是一个循环,因为它只会“循环”。有一次。我只是想感谢大家的帮助!我想我现在有我需要的了。非常感谢大家!你们真是太棒了!成功了!非常感谢!
public static int  initialPosition() {
 Scanner keyboard= new Scanner (System.in);
   System.out.println("Enter the initial position (Must be over 600 feet)");

   do {
         int position = keyboard.nextInt();
         if (position < HEIGHTTHRESHOLD) {
             System.out.println("Error- Position is too low! Try Again");
             System.out.println("Enter the initial position "
                 + "(Must be over 600 feet)");
         }

   }while (position<HEIGHTTHRESHOLD);
    return position;