Я пытался закодировать эту программу часами, поэтому, пожалуйста, держите меня в покое.Я даже разбил циклы по отдельности, но как только я собрал все воедино, он не работает так, как мне нужно.
Итак, позвольте мне разбить то, что мне нужно, чтобы каждый цикл делал, и затем какой у меня выходполучение:
1) Первый цикл, который мне нужно использовать, это do / while.В этом цикле пользователю предлагается ввести слово.Если пользователь вводит неправильное слово, он получает сообщение об ошибке:
Invalid!Попробуйте снова!Осталось 2 попытки!
Неверно!Попробуйте снова!Осталось 1 попытка!
Извините!У вас больше нет попыток!
Этот вывод работает до тех пор, пока каждый раз вводится неправильное слово, но если правильное слово вводится после 1 неудачной попытки, оно по-прежнему применяет сообщение об ошибке
2) В моем втором цикле (для цикла) пользователю предлагается ввести "3 * 8 =". Эта часть цикла работает нормально, если все 3 раза введено неправильное числоили если 24 вводится при любой попытке.
Проблема заключается в цикле после ввода 24.Вывод следующий:
Спасибо, бла-бла.Мы позвоним вам по номеру 5555555555, если вы выиграли. 3 * 8 = Там, где 3 * 8 не должно отображаться.Я понимаю, что могу войти в перерыв;после этого утверждения, но в инструкциях конкретно сказано, что я не могу использовать команду прерывания.
Правильный вывод должен выглядеть так: Спасибо, бла-бла.Мы позвоним вам по номеру 5555555555, если вы выиграете.
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int attempt = 2;
int answer = 24;
long phoneNumber = 0;
String firstName = "";
String lastName = "";
String wordOfTheDay = "";
System.out.printf("Enter the word of the day: ");
wordOfTheDay = input.nextLine();
if(wordOfTheDay.equals("tired"))
{
for( attempt = 2; attempt >= 0; --attempt)
{
System.out.print(" 3 * 8 = ");
answer = input.nextInt();
input.nextLine();
if( answer == 24)
{
System.out.printf( "Please enter your first name, last name, and phone number (no dashes or spaces)\n" +"in a drawing for an all-expenses-paid vacation in the Bahamas: " );
firstName = input.next();
lastName = input.next();
phoneNumber = input.nextLong();
System.out.printf(
"Thank you %s %s. We'll call you at %d if you're a winner.",
firstName,
lastName,
+ phoneNumber);
}
else if( answer != 24)
{
if(attempt!=0)
{
System.out.printf( "Invalid! Try Again! %d attempt(s) left!\n ", attempt);
continue;
}
else
{
System.out.print( "Sorry! You have no more attempts left!" );
}
}
}
}
else
{
do
{
System.out.printf( "Invalid! Try Again! %d attempt(s) left!\n ", attempt);
--attempt;
System.out.printf("Enter the word of the day: ");
wordOfTheDay = input.nextLine();
} while (attempt >= 1);
if( attempt == 0)
{
System.out.print( "Sorry! You have no more attempts left!" );
}
}
}
Надеюсь, я достаточно ясно дал понять.
Напомним, мне нужно исправить проблему с моим do /, не давая мне ввести правильное слово после неудачной попытки.
Кроме того, мне нужно избавиться от 3 * 8= появляется после того, как пользователи вводят правильный ввод.
Спасибо!