Java 正在尝试将执行while循环转换为while循环
我尝试将while转换为while循环,甚至编译程序,但什么也没发生。 原始do while循环代码:Java 正在尝试将执行while循环转换为while循环,java,loops,Java,Loops,我尝试将while转换为while循环,甚至编译程序,但什么也没发生。 原始do 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
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 );
}
}
尝试从do while循环执行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);
}
}
}
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();
}
代码编译没有问题,但我在运行它之后看到了空白输出。这是因为您从未再次将
变量初始化为y
,因此在
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();
}
输出:
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
用“y”
再次初始化:
并在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);
}
}
}
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();
}
Do While循环保证至少运行一次,而循环不运行。您将得到一个空白输出,因为您正在等待第11行的键盘输入,但您不能do while
循环和while
循环是不可互换的,至少没有额外的布尔变量。你为什么还要尝试?谢谢你的努力!我是否正确理解了if reach=keyboard.next();是在这里注释的,然后程序总是在这里自动为我键入“y”?它不会再改变,
,所以你会遇到内联循环!