0

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

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

公开课秘密答案

{

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

4 回答 4

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

            }
于 2013-04-28T08:04:40.597 回答
1

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

但是,一开始如果你不从键盘输入“stop”,inside loop 的条件就会成立。

有两种选择:

  1. 要么你添加另一个

    input = sc.next();
    在内部 while 循环中,以便条件为 False 并退出循环。

  2. 或者你完全移除内部循环。只保留外部的while循环,当你从控制台输入字符串时它会不断迭代,当你输入时停止

    "stop"
    .

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

只需很好地缩进和编辑代码,在下一行缩进时不要使用空格,使用制表符,它使代码优雅。

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

于 2013-04-28T08:19:58.410 回答
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'
}
于 2013-04-28T08:23:14.643 回答
0

看看你的内循环。您不会在那里重新分配输入!

于 2013-04-28T08:05:56.697 回答