Я пытаюсь преобразовать do-while 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, 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);
}
}
Как это выглядит после того, как я пытался сделать в то время как цикл из делать-то время цикла:
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);
}
}
}
код компилируется без проблем, но я вижу пустой вывод после запуска Это.
Do-While петли гарантированно работать по крайней мере один раз, в то время как петли нет. Вы получаете пустой вывод, потому что вы ожидаете ввода клавиатуры в строке 11 –
Вы не можете. 'do-while'loops и циклы' while' не являются взаимозаменяемыми, по крайней мере, без дополнительной логической переменной. Почему вы даже пытаетесь? – EJP