2014-01-08 3 views
0

Цикл do while заканчивается после того, как я выполнил один из вариантов, которые я изложил. Например, он говорит: Процесс завершен кодом выхода 0, после того как я купил и развернул некоторые войска.Loop break after action

Что мне не хватает ?! Я хочу, чтобы он продолжал идти, пока человек не пожелает иначе, или игрок побеждает.

do { 
     refresh(); 
     System.out.println("" + 
       "Lobby\n\n" + 
       "==========\n" + 
       "Balance: "+balance+"\n" + 
       "Production Per Tick: "+production+"\n"+ 
       "\n----------\n" + 
       "Options\n" + 
       "----------\n" + 
       "1. Show map\n" + 
       "2. Build troops\n" + 
       "3. Move troops\n" + 
       "4. Upgrade Production\n" + 
       "5. End turn\n"); 
     minimenu = input.nextInt(); 
     if (minimenu==1) { 
      refresh(); 
      displayMap(map); 
      System.out.println("" + 
        "Map Legend:\n" + 
        "------------\n" + 
        "0 = not occupied\n" + 
        "1 = US Territory\n" + 
        "2 = Terrorist Territory\n"); 
     } 
     else if (minimenu==2) { 
      int troop; 

      refresh(); 
      System.out.println("" + 
        "Choose the troops you want to build\n" + 
        "-----------------------------------\n" + 
        "1. Special Force - 100$\n" + 
        "2. Tank - 500$ \n" + 
        "3. F-32 - 1500$ \n" + 
        "--->"); 
      troop = input.nextInt(); 

       int amount,troopCount; 
       System.out.print("Number of Special Forces you want: "); 
       troopCount = input.nextInt(); 
       amount = troopCount*100; 
       System.out.println("\nTotal: "+amount+"$\n" + 
         "Type 1 to conform: \n"); 
        if (input.nextInt() ==1) 
         balance = balance-amount; 
       int X,Y; 
       do { 
       System.out.print("" + 
         "where do you want to deploy the troops? (Must deploy on own land!)\n" + 
         "Enter Y coordinate: "); 
         Y = input.nextInt(); 
       System.out.println("\nEnter X Coordinate"); 
         X = input.nextInt(); 
       System.out.println(map[Y][X]+"This One"); //test code 

        if (varifyDeployment(map[Y][X])) { 
         if (troop==1) { 
          US_SpecialForce[Y][X] += troopCount; 
          System.out.println("Success!"); 
         } 
         else if (troop ==2) { 
          US_Tank[Y][X] += troopCount; 
          System.out.println("Success!"); 
         } 
         else if (troop == 3) { 
          US_Air[Y][X] += troopCount; 
          System.out.println("Success!"); 
         } 
        } 
        else 
         System.out.println("Incorrect location, Try Again"); 
       }while (!varifyDeployment(map[Y][X])); 
        displayMap(US_SpecialForce); //test code 

     } 
    }while (minimenu==5); 

Спасибо

+4

Используйте отладчик и выполните свой код. –

+0

'do {...} while (b)' делает цикл один раз, а затем продолжает делать это, а 'b' -' true'. Если 'b' является' false', он прекращает выполнение цикла. Не могли бы вы понять, как это сработало? – ajb

ответ

2

Похоже, ваша логика неверна. У вас есть в качестве опции меню # 5

"5. End turn\n" 

Но ваше состояние петли сделай, пока

}while (minimenu==5); 

Это будет продолжаться цикл только в том случае, если minimenu 5. Я думаю, что вы хотите, не равно 5, поэтому цикл будет продолжаться, если он не 5, и он закончится, если он равен 5.

}while (minimenu != 5); 
+0

Именно эта проблема была. Спасибо! – user3170899