2017-02-12 2 views
-1

Когда я запускаю свою программу, используя «! Choice.equals (« 6 »)», она запускает мое главное меню, когда это не выполняет выбранную функцию, и ничего не происходит, и это происходит немедленно. Однако, если мое условие в цикле while «choice.equals (« 6 »)», оно выполняет одну из моих функций, которую основное меню снова появляется и выходит, когда я выбираю от 1 до 5, даже если я вообще не войду в 6 , Меню не будет вызывать другую выбранную функцию. Я вроде как подшутил, что оба условия не будут работать в этой программе, над которой я работаю.Главное меню появляется один раз и закрывается, даже не входя в функцию выхода. Также не вызывает функцию правильно?

Я использовал debbuger, когда я вступил в условие, это не позволило мне пройти «! Choice.equals (« 6 »)». Я ожидал, что мое главное меню продолжит просить меня войти в выбор, прежде чем я решит выйти из программы.

private void mainMenu() 
{ 
    String input = JOptionPane.showInputDialog("Persona Library Main Menu\n" + 
      "1. Add from this list:\n" + 
      " -Language\n" + 
      " -Fiction\n" + 
      " -Geography\n" + 
      "2. Search Item By ID\n" + 
      "3. Remove this from Library\n" + 
      "4. Random Books\n" + 
      "5. Print complete list or by category\n" + 
      "6. Exit Program"); 
    String choice = input; 

     while(!choice.equals("6"));     
     { 

      switch(choice) 
      { 
      case "1": 
       addToLibrary(); 
       break; 
      case "2": 
       searchByIDtoPrint(); 
       break; 
      case "3": 
       removeFromLibrary(); 
       break; 
      case "4": 
       //undecided; 
       break; 
      case "5": 
       searchCategoryToPrint(); 
       break; 
      case "6": 
       //undecided 
       break; 
      } 
      input = JOptionPane.showInputDialog("Persona Library Main Menu\n" + 
        "1. Add from this list:\n" + 
        " -Language\n" + 
        " -Fiction\n" + 
        " -Geography\n" + 
        "2. Search Item By ID\n" + 
        "3. Remove this from Library\n" + 
        "4. Random Books\n" + 
        "5. Print complete list or by category\n" + 
        "6. Exit Program"); 
      choice = input; 
     } 
} 
+0

точка с запятой замыкает ваш цикл while: 'while (! Choice.equals (" 6 "));'. –

+0

@Hovercraft Full Eels благодарит за указание. Я, наконец, начал работать. Мой фон, вероятно, в затмении сделал так трудно увидеть точку с запятой рядом с условием lol! Благодаря! –

ответ

0

Из того, что я могу читать - состояние, а будет работать только тогда, когда выбор не равно 6, что означает, что если вы не вводите 6 на ваш (choice.equals («6»)!) выбор первого входа, он никогда не войдет в цикл и просто перейдет к следующему приглашению ввода.

Поскольку входные подсказки являются не внутри петель после того, как во второй раз вы просите их, чтобы ввести номер программа достигнет конца функции, и я предполагаю прекратить - это то, где некоторые из ваших проблем могут лежать, вы не сказали ему ничего делать после второго приглашения.

Могу ли я предложить цикл Do-While как в:

do { /*Enter input prompts and case statements here*/ } while (program == true) 

и только настройки входа, если вы выбираете опцию, чтобы закрыть программу. Таким образом, вы гарантируете, что программа будет запускаться хотя бы один раз, и если вы никогда не выберете exit - вы просто просто вернетесь к подсказке.

* EDIT - Также, вы только что заметили, что никогда не изменяете выбор в цикле while, что означает, что вы будете в бесконечном цикле.

Надеюсь, это ответит на ваш вопрос.

+0

Благодарим вас за предложение. Я изменил цикл while, чтобы сделать это, и теперь он работает прямо сейчас. Я полностью забыл о том, что сделал, пока я использовал его один раз и никогда больше. Хотя это будет мой второй раз. Благодаря! –

+0

Не беспокойтесь :) Рад, что я мог бы помочь! – Anton