2014-09-04 2 views
0

Итак, я пытаюсь создать программу для задания, в которой пользователь выбирает животное, и в зависимости от этого животного (собака/курица/рыба), сколько ног есть. Если пользователь не выбрал одного из трех животных, игра затем спросит пользователя, хотят ли они снова играть. Если ответом будет y, программа начнет работу, но если это n, программа остановится. Ошибка находится вблизи дна, где указано «Строка gameAnswer = input.nextLine();». В нем говорится, что мне нужно переименовать gameAnswer. Может ли кто-нибудь помочь мне исправить это, чтобы программа работала?Корпус коммутатора в Do .. Хотя ошибка + Java

Заранее благодарен!

public static void main(String[] args) { 

    Scanner input = new Scanner(System.in); 
    System.out.println("Choose an animal: "); 
    String text = input.nextLine(); 
    char n; 
    char y; 
    char gameAnswer = 'n'; 

    do 
     { 
     switch (text) { 
     case "dog": 
      System.out.println("How many legs does a dog have?"); 
      int dg = input.nextInt(); 

      if(dg == 4) 
      { 
       System.out.println("You win!"); 
      } 
      else 
      { 
       System.out.println("You lose!"); 
      } 
      break; 

     case "chicken": 
      System.out.println("How many legs does a chicken have?"); 
      int chkn = input.nextInt(); 

      if(chkn == 2) 
      { 
       System.out.println("You win!"); 
      } 
      else 
      { 
       System.out.println("You lose!"); 
      } 
      break; 

     case "fish": 
      System.out.println("How many legs does a fish have?"); 
      int fsh = input.nextInt(); 

      if(fsh == 0) 
      { 
       System.out.println("You win!"); 
      } 
      else 
      { 
       System.out.println("You lose!"); 
      } 
      break; 

      default: 
       break; 
     } 
     } 
    while(gameAnswer == 'y'); 
    System.out.println("I don't know that animal. Do you want to try again? (y/n)"); 
    String gameAnswer = input.nextLine(); 
    } 
+0

Единственная ошибка, которую я получаю, это последняя строка 'String gameAnswer = input.nextLine();', потому что 'gameAnswer' уже определен ... – MadProgrammer

ответ

2

побуждению и чтение линии должна быть в пределах вашего цикла

НЕ

while(gameAnswer == 'y'); 
System.out.println("I don't know that animal. Do you want to try again? (y/n)"); 
char gameAnswer = input.nextLine(); 

НО

System.out.println("I don't know that animal. Do you want to try again? (y/n)"); 
gameAnswer = input.nextLine(); 
while(gameAnswer == 'y'); 

ТАКЖЕ

gameAnswer является уже определены, поэтому не переопределяйте его.

А ТАКЖЕ

Вы, вероятно, хотите gameAnswer = input.nextLine().charAt (0);

EDIT

также двигаться

System.out.println("Choose an animal: "); 
String text = input.nextLine(); 

к после

do 
+0

Итак, я немного смущен. Как сделать matchAnswer совместимым в программе? Под этим я подразумеваю, как мне заставить программу запрашивать первое утверждение (пожалуйста, выберите животное) снова, если мне нужно переименовать gameAnswer? Разве мне не нужно иметь gameAnswer, где я его разместил? – evarias

+0

Нет, вам нужно, чтобы я разместил его. Поскольку вы уже определили 'gameAnswer' один раз в соответствующей области, вам не нужно делать это снова. Если вы замените код 'NOT' на' BUT', вы должны быть правы. –

+0

Итак, у меня нет ошибок, но когда я запускаю код, у меня возникают проблемы. *** 1. Если я вхожу в неправильное животное (например, кошку), программа затем сообщает пользователю, что он не знает этого животного и спрашивает пользователя, хотят ли они повторить попытку. После того, как я введу y, программа затем снова сообщит пользователю, что знает зверя и спрашивает пользователя, хотят ли они снова попробовать. *** – evarias

Смежные вопросы