2013-09-22 3 views
0

Я пишу программу, которая перемещает фотографию Чичиро из фильма «Унесенная духом». Все, что мне сейчас нужно сделать, это переместить ее влево, вправо, вверх и вниз. У нее есть начальная позиция, которую вводит пользователь. Затем моя программа запрашивает ввод пользователя для перемещения ее u/d/l/r. Как я могу запросить ввод данных для входа в AGAIN? Он всегда просто перемещает ее и выходит из цикла.оператор switch и пользовательский ввод

// Initial position 
Scanner keyboard = new Scanner(System.in); 
System.out.print("Starting row: "); 
int currentRow = keyboard.nextInt(); 
System.out.print("Starting column: "); 
int currentCol = keyboard.nextInt(); 

// Create maze 
Maze maze = new Maze(numberRows, numberCols, currentRow, currentCol); 

System.out.print("Move Chichiro (u/d/lr): "); 

char move = keyboard.next().charAt(0); 

switch (move){ 

    case 'u': maze.moveTo(--currentRow, currentCol); // move up 
     break; 
    case 'd': maze.moveTo(++currentRow, currentCol); // move down 
     break; 
    case 'l': maze.moveTo(currentRow, --currentCol); // move left 
     break; 
    case 'r': maze.moveTo(currentRow, ++currentCol); // move right 
     break; 
    default: System.out.print("That is not a valid direction!"); 

} 
+1

вы пе отредактировал цикл «do-while», окружающий «switch-case». –

ответ

1

Поместите свой код в цикле в то время, и включает в себя средства для выхода, как попав в q ключе:

boolean quit=false; 

//keep asking for input until a 'q' is pressed 
while(! quit) { 
    System.out.print("Move Chichiro (u/d/l/r/q): "); 
    char move = keyboard.next().charAt(0);  

    switch (move){ 
    case 'u': maze.moveTo(--currentRow, currentCol); // move up 
       break; 
    case 'd': maze.moveTo(++currentRow, currentCol); // move down break; 
    case 'l': maze.moveTo(currentRow, --currentCol); // move left 
       break; 
    case 'r': maze.moveTo(currentRow, ++currentCol); // move right 
       break; 
    case 'q': quit=true; // quit playing 
       break; 
    default: System.out.print("That is not a valid direction!");}} 
    } 
} 
0

следующего код вы можете двигаться столько, сколько вы хотите и когда вы чтобы выйти из программы, вы просто должны ввести 'Q':

 // Create maze 
    Maze maze = new Maze(numberRows, numberCols, currentRow, currentCol); 
    char move; 


    do{ 

      System.out.print("Move Chichiro (u/d/lr): "); 

     move = keyboard.next().charAt(0); 

     switch (move){ 

      case 'u': maze.moveTo(--currentRow, currentCol); // move up 
       break; 
      case 'd': maze.moveTo(++currentRow, currentCol); // move down 
       break; 
      case 'l': maze.moveTo(currentRow, --currentCol); // move left 
       break; 
      case 'r': maze.moveTo(currentRow, ++currentCol); // move right 
       break; 
      default: System.out.print("That is not a valid direction!"); 

     } 

    }while(move != 'q'); 

EDIT: Коррекция

+0

Да, спасибо – SegFault

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