2015-04-20 2 views
1
public static void main(String[] args) { 
    StackX theStack = new StackX(99); 

    String current = "Enterprise"; 
    int logOut = 1; 
    String planetName; 
    int secretCode; 
    //This is the start out, do not loop this 
    System.out.println("You are on the enterprise, where would you like to teleport?"); 

    //while loop will be done after reaching Io 
    do { 

     Scanner input = new Scanner(System.in); 
     //Grab input from user 
     System.out.println("Enter a planet name: "); 
     planetName = input.nextLine(); 
     System.out.println("Enter a the four digit code for " + planetName + ": "); 
     secretCode = input.nextInt(); 

     if (current.equals("Enterprise")){ 

      if (planetName.equalsIgnoreCase("Europa") && secretCode == 9007){ 
       current = planetName; 
       Moon Europa = new Moon(planetName, secretCode); 
       theStack.push(Europa); 
      } else if (planetName.equalsIgnoreCase("Titan") && secretCode == 1232){ 
       current = planetName; 
       Moon Titan = new Moon(planetName, secretCode); 
       theStack.push(Titan); 
      } else if (planetName.equalsIgnoreCase("Rhea") && secretCode == 5623){ 
       current = planetName; 
       Moon Rhea = new Moon(planetName, secretCode); 
       theStack.push(Rhea); 
      } else { 
       logOut = 0; 
       System.out.println("You are dead."); 
      } 

     } else if (current.equals("Titan")){ 

      if (planetName.equalsIgnoreCase("Enterprise") && secretCode == 1212){ 
       current = planetName; 
       Moon Enterprise = new Moon(planetName, secretCode); 
       theStack.push(Enterprise); 
      } else if (planetName.equalsIgnoreCase("Rhea") && secretCode == 5623){ 
       current = planetName; 
       Moon Rhea = new Moon(planetName, secretCode); 
       theStack.push(Rhea); 
      } else if (planetName.equalsIgnoreCase("Elara") && secretCode == 1264){ 
       current = planetName; 
       Moon Elara = new Moon(planetName, secretCode); 
       theStack.push(Elara); 
      } else { 
       logOut = 0; 
       System.out.println("You are dead."); 
      } 

     } else if (current.equals("Rhea")){ 

      if (planetName.equalsIgnoreCase("Enterprise") && secretCode == 1212){ 
       current = planetName; 
       Moon Enterprise = new Moon(planetName, secretCode); 
       theStack.push(Enterprise); 
      } else if (planetName.equalsIgnoreCase("Titan") && secretCode == 1232){ 
       current = planetName; 
       Moon Titan = new Moon(planetName, secretCode); 
       theStack.push(Titan); 
      } else if (planetName.equalsIgnoreCase("Europa") && secretCode == 9007){ 
       current = planetName; 
       Moon Europa = new Moon(planetName, secretCode); 
       theStack.push(Europa); 
      } else { 
       logOut = 0; 
       System.out.println("You are dead."); 
      } 

     } else if (current.equals("Europa")){ 

      if (planetName.equalsIgnoreCase("Enterprise") && secretCode == 1212){ 
       current = planetName; 
       Moon Enterprise = new Moon(planetName, secretCode); 
       theStack.push(Enterprise); 
      } else if (planetName.equalsIgnoreCase("Rhea") && secretCode == 5623){ 
       current = planetName; 
       Moon Rhea = new Moon(planetName, secretCode); 
       theStack.push(Rhea); 
      } else if (planetName.equalsIgnoreCase("Metis") && secretCode == 2535){ 
       current = planetName; 
       Moon Metis = new Moon(planetName, secretCode); 
       theStack.push(Metis); 
      } else { 
       logOut = 0; 
       System.out.println("You are dead."); 
      } 

     } else if (current.equals("Elara")){ 

      if (planetName.equalsIgnoreCase("Titan") && secretCode == 1232){ 
       current = planetName; 
       Moon Titan = new Moon(planetName, secretCode); 
       theStack.push(Titan); 
      } else if (planetName.equalsIgnoreCase("Metis") && secretCode == 2535){ 
       current = planetName; 
       Moon Metis = new Moon(planetName, secretCode); 
       theStack.push(Metis); 
      } else { 
       logOut = 0; 
       System.out.println("You are dead."); 
      } 

     } else if (current.equals("Metis")){ 

      if (planetName.equalsIgnoreCase("Europa") && secretCode == 9007){ 
       current = planetName; 
       Moon Europa = new Moon(planetName, secretCode); 
       theStack.push(Europa); 
      } else if (planetName.equalsIgnoreCase("Elara") && secretCode == 1264){ 
       current = planetName; 
       Moon Elara = new Moon(planetName, secretCode); 
       theStack.push(Elara); 
      } else if (planetName.equalsIgnoreCase("Io") && secretCode == 4792){ 
       current = planetName; 
       Moon Io = new Moon(planetName, secretCode); 
       theStack.push(Io); 
       System.out.println("You have acquired the Macho Orb! Return to the Enterprise."); 
      } else { 
       logOut = 0; 
       System.out.println("You are dead."); 
      } 

     } else if (current.equals("Io")){ 

      if (planetName.equalsIgnoreCase("Metis") && secretCode == 2535){ 
       current = planetName; 
       Moon Metis = new Moon(planetName, secretCode); 
       theStack.push(Metis); 
      } else { 
       logOut = 0; 
       System.out.println("You are dead."); 
      } 

     } else { 
      logOut = 0; 
      System.out.println("You are dead."); 

     } 

    } while((!current.equals("Io")) || (logOut != 0)); 


} 

Главное, что здесь неправильно, что цикл do-while не будет выходить. Предпосылка программы - прыгать с планеты на планету, в то время как имя планеты - это пункт назначения, а текущий - текущая планета, на которой вы находитесь. То, что я хочу, это цикл для выхода, когда ток «Io». Пункт назначения становится текущей планету после каждого «прыжка» на другую планету. Я испытал это, и ток не равен «Ио», когда предполагается наНовичок: Java Пока цикл не выйдет?

if (planetName.equalsIgnoreCase("Io") && secretCode == 4792) { 
     current = planetName; 
     Moon Io = new Moon(planetName, secretCode); 
     theStack.push(Io); 
     System.out.println("You have acquired the Macho Orb! Return to the Enterprise."); 
    } 

Однако, цикл продолжает идти.

+0

Изменить || в условии выхода в &&, в противном случае они должны выйти из системы и сделать это в Io, чтобы закончить игру. – kirbyquerby

+0

Вау, я не могу поверить, что это была такая небольшая ошибка. Большое спасибо – Outright

+0

, и я предлагаю вам попробовать рефакторинг, используя следующие понятия: полиморфизм и фабрика. Использование хэш-таблицы также может быть полезно. – onof

ответ

2

while ((! Current.equals ("Io")) || (logOut! = 0));

должен быть изменен на

время (! (Current.equals ("Io")) & & (LogOut = 0)!);

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