小程序有一些循环问题

时间:2013-04-28 08:02:11

标签: java loops while-loop do-while infinite

我正在为我的入门级编程课程做一个小程序的小问题。

这个循环无限重复,我似乎无法弄清楚为什么。我怀疑do循环中的while循环有某种冲突,这导致循环不断重复。 这是代码:     import java.util。*;

公共类secretAnswer

{

public static void main(String [ ]  args)
{
    final char answer = ('r');
    String input;
    Scanner sc = new Scanner(System.in);

    do
    {
    System.out.println("What is your guess?");
    input = sc.next();
    while(!input.equals("stop")) //If the user doesn't want to stop, continue
    {
        if(input.contains(""+answer)) //If the input contains the answer, print the following statement
        {
            System.out.println("Your input contained the secret letter");
        }
        else //If the input doesn't contain the answer, print the following statement
        {
            System.out.println("Your input does not contain the secret letter");
        }

    }
    }

    while(!input.equals("stop")); //loop the program if the input is not equal to 'stop'
}

}

4 个答案:

答案 0 :(得分:4)

因为您需要再次要求用户输入新的guess,您只需从用户那里获取一次输入,如果等于stop将结束程序,如果不会永远循环,那么试试这个:

  while (!input.equals("stop")) //If the user doesn't want to stop, continue
            {

                if (input.contains("" + answer)) //If the input contains the answer, print the following statement
                {
                    System.out.println("Your input contained the secret letter");
                } else //If the input doesn't contain the answer, print the following statement
                {
                    System.out.println("Your input does not contain the secret letter");
                }
                System.out.println("What is your guess?");
                input = sc.next();///////////////here the user will enter the new guess

            }

答案 1 :(得分:1)

不需要两个循环。外部Do..while循环就足够了。 DO循环执行一次,然后再次扫描新令牌,然后基于此,它将决定其下一次迭代。

但是,首先如果你没有从键盘输入“stop”,内部循环的条件将成立。

有两种选择:

  1. 要么在内部while循环中添加另一个

    input = sc.next();
    ,那么条件有可能为False并从循环中退出。

  2. 或者您完全删除内部循环。只保留外部while循环,它会在你从控制台输入字符串时继续迭代,并在你输入

    "stop"
    时停止。

  3. 我会选择第二个选项。虽然,在第一个选项中,要停止两个循环,你必须输入两次STOP,一次用于内循环,一次用于外循环。

    只需缩进并编辑你的代码,在下一行缩进时不要使用空格,使用制表符,它会使代码更优雅。

    你可以使用答案高于我答案的人给出的代码。

答案 2 :(得分:1)

你在do循环中不必要地使用while循环 它应该是一个if语句,一切都会按你的意愿工作

do
    {
    System.out.println("What is your guess?");
    input = sc.next();
    System.out.println("input" + input);
    if(!input.equals("stop")) //If the user doesn't want to stop, continue
    {
        if(input.contains(""+answer)) //If the input contains the answer, print the following statement
        {
            System.out.println("Your input contained the secret letter");
        }
        else //If the input doesn't contain the answer, print the following     statement
        {
            System.out.println("Your input does not contain the secret letter");
        }

    }
    }

    while(!input.equals("stop")); //loop the program if the input is not equal to    
 'stop'
}

答案 3 :(得分:0)

看看你的内循环。你没有在那里重新分配输入!