2016-02-14 2 views
0
import java.util.Scanner; 
public class PlayAgain { 
public static void main(String[] args) { 

    Scanner input = new Scanner(System.in);   
    boolean playing = true; 
    char replayCheck; 

    do { //start do-while 
     System.out.print("Play again? (y/n): ");   
     boolean validInput = false; 
     while (validInput = false){ //start while 
      replayCheck = input.next().charAt(0); 
      switch (replayCheck) { //start switch 
       case 'y': 
       case 'Y': 
        validInput = true; 
        playing = true; 
        break; 
       case 'n': 
       case 'N': 
        validInput = true; 
        playing = false; 
        break; 
       default: 
        System.out.println("Invalid input! please enter (y/n)"); 
        validInput = false; 
        break; 
      } //end switch 
     } //end while 
    } while (playing = true); //end do-while  
    System.out.println("Thanks for playing!"); 
} //end main 
} //end class 

Если пользователь вводит n/N, программа воспроизводится снова, то же самое относится к любому другому входу. Логика кажется просто прекрасной, но я получаю «назначенное значение никогда не используется» на линии с replayCheck = input.next().charAt(0);, поэтому я подозреваю, что проблема там.Java игра снова? (y/n)

Я немного нуоби. Любые предложения приветствуются!

+0

Ваш пока тест не так: вы делаете аффектации вместо теста ... заменить: игра == истинный –

ответ

0

Проверка должна быть:

while (validInput == false) { 
    .... 
} 

В противном случае вы будете назначать false к validInput, что приводит к false и, следовательно, выходит из цикла.

В Java, идиоматических способ писать такую ​​проверку является:

while (!validInput) { 
    ... 
} 
+0

ха-ха! Простые ошибки всегда те, с которыми у меня больше всего неприятностей. Работал как шарм, спасибо! –

0

Проблема в то время как петля должна быть while (validInput == false) {}

1

изменение '=' до '==' для сравнения, и ваш код работает отлично:

import java.util.Scanner; 
public class PlayAgain { 
public static void main(String[] args) { 

    Scanner input = new Scanner(System.in); 
    boolean playing = true; 
    char replayCheck; 

    do { //start do-while 
     System.out.print("Play again? (y/n): "); 
     boolean validInput = false; 
     while (validInput == false){ //start while 
      replayCheck = input.next().charAt(0); 
      switch (replayCheck) { //start switch 
       case 'y': 
       case 'Y': 
        validInput = true; 
        playing = true; 
        break; 
       case 'n': 
       case 'N': 
        validInput = true; 
        playing = false; 
        break; 
       default: 
        System.out.println("Invalid input! please enter (y/n)"); 
        validInput = false; 
        break; 
      } //end switch 
     } //end while 
    } while (playing == true); //end do-while 
    System.out.println("Thanks for playing!"); 
} //end main 
} //end class