尝试转换同时循环到while循环
问题描述:
我试图转换同时while循环和程序甚至编译,但没有任何反应。 原始do-while循环代码:尝试转换同时循环到while循环
import java.util.Scanner;
public class CoinFlip
{
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
String coin, again;
int flip, streak = 0;
do
{
flip = 1 + (int)(Math.random()*2);
if (flip == 1)
coin = "HEADS";
else
coin = "TAILS";
System.out.println("You flip a coin and it is... " + coin);
if (flip == 1)
{
streak++;
System.out.println("\tThat's " + streak + " in a row....");
System.out.print("\tWould you like to flip again (y/n)? ");
again = keyboard.next();
}
else
{
streak = 0;
again = "n";
}
} while (again.equals("y"));
System.out.println("Final score: " + streak);
}
}
如何它看起来像后,我试图做while循环从do-while循环:
import java.util.Scanner;
public class CoinFlip2
{
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
String coin, again;
int flip, streak = 0;
again = keyboard.next();
//flip = 1 + (int) (Math.random()*2);
while (again.equals("y"))
{
flip = 1 + (int) (Math.random()*2);
if (flip == 1)
{
coin = "HEADS";
}
else
{
coin = "TAILS";
System.out.println("You flip a coin and it is..." + coin);
}
if (flip == 1)
{
streak++;
System.out.println("\tThat's " + streak + " in a row....");
System.out.print("\tWould you like to flip again (y/n)? ");
//again = keyboard.next();
}
else
{
streak = 0;
again = "n";
}
System.out.println("Final score: " + streak);
}
}
}
代码编译没有问题,但我看到后运行空白输出它。
答
那是因为你从来没有初始化again
变量y
,所以它永远不匹配状态,以进入while
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
String coin, again = "y";
int flip, streak = 0;
// flip = 1 + (int) (Math.random()*2);
while (again.equals("y")) {
flip = 1 + (int) (Math.random() * 2);
if (flip == 1) {
coin = "HEADS";
} else {
coin = "TAILS";
System.out.println("You flip a coin and it is..." + coin);
}
if (flip == 1) {
streak++;
System.out.println("\tThat's " + streak + " in a row....");
System.out.print("\tWould you like to flip again (y/n)? ");
again = keyboard.next();
// again = keyboard.next();
} else {
streak = 0;
again = "n";
}
}
System.out.println("Final score: " + streak);
keyboard.close();
}
OUTPUT:
That's 1 in a row....
Would you like to flip again (y/n)? y
You flip a coin and it is...TAILS
Final score: 0
答
初始化您again
与"y"
:
String coin, again;
int flip, streak = 0;
again = "y";
...
,并要求在while循环的键盘输入:
if (flip == 1)
{
streak++;
System.out.println("\tThat's " + streak + " in a row....");
System.out.print("\tWould you like to flip again (y/n)? ");
again = keyboard.next();
}
+0
谢谢那块岩石! 我理解正确,如果 again = keyboard.next(); 在这里被评论,然后程序总是自动为我输入“y”? – Anonymous
+0
那么它不会再''再次'所以你会遇到一个无限循环! – ParkerHalo
DO-while循环保证至少运行一次,而循环都没有。你得到一个空白的输出,因为你正在等待第11行的键盘输入 –
你不能。 'do-while'loops和'while'循环是不可互换的,至少没有额外的布尔变量。你为什么要尝试? – EJP