我正在为我的入门级编程课程做一个小程序的小问题。
这个循环无限重复,我似乎无法弄清楚为什么。我怀疑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'
}
}
答案 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”,内部循环的条件将成立。
有两种选择:
要么在内部while循环中添加另一个
input = sc.next();
,那么条件有可能为False并从循环中退出。
或者您完全删除内部循环。只保留外部while循环,它会在你从控制台输入字符串时继续迭代,并在你输入
"stop"
时停止。
我会选择第二个选项。虽然,在第一个选项中,要停止两个循环,你必须输入两次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)
看看你的内循环。你没有在那里重新分配输入!