2017-08-08 5 views
0

Je suis nouveau à Java et cela fait partie de mon code de chatbot. Quand je cours createQuestions() de showMenu() cela ne semble pas fonctionner. Qu'est-ce que createQuestion() fait est de laisser l'utilisateur créer des questions et discuter avec eux-mêmes. Le problème est iciMon code Java Chatbot ne fonctionne pas et je ne sais pas pourquoi

Bienvenue!

Choisissez votre option:

1) Ajouter Questions

2) Chat (Vous devez ajouter question d'abord)

3) En savoir plus sur Villes

4) Sortie

Vous: 1

Créer des questions ... Type 'en d 'si vous souhaitez arrêter Question? (il ne suspend pas ici que je dois lire ce que l'entrée d'utilisateur et le stocker sous forme question)

Vous:

Combien de réponses que vous voulez? :

 //Start of ShowMenu(): 
     txtChat.append("\nWelcome!\nChoose your option:"); 
     txtChat.append("\n1)Add Questions\n2)Chat(You need to add question first)\n3)Know more about Towns\n4)Exit\n"); 
     txtChat.append(">>>\n"); 

     txtEnter.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       showMenu(); 
      }//end actionPerformed 

     });//end actionListener 

    }//end TestinChatBot 

    public void showMenu() { 
     String choice; 

     do { 

      switch (choice) { 
       case "1": 
        createQuestions(); 
        break; 
       case "2": 
        startChat(); 
        break; 
       case "3": 
        knowtowns(); 
        break; 
       case "4": 
        txtChat.append("\nFinally! I can play MapleStory! Sayonara!"); 
        System.exit(0); 
        break; 
       default: 
        break; 
      } 

     } while (!choice.equals("4")); 

    } 

    public void createQuestions() { 
     txtChat.append("\nCreating questions...Type 'end' if you wish to stop\n"); 

     do { 

      txtChat.append("Question? \n"); 
      q = txtEnter.getText(); 
      txtChat.append("You: " + q + "\n"); 

      if (!q.contains("end")) { 
       txtChat.append("How many responses do you want? : "); 
       noOfResponses = Integer.parseInt(txtEnter.getText()); 
       txtEnter.setText(""); 
       String r[] = new String[noOfResponses]; 
       if (noOfResponses > 0) { 
        for (int i = 0; i < noOfResponses; i++) { 
         txtChat.append("Response " + (i + 1) + ": "); 
         r[i] = txtEnter.getText(); 
         txtEnter.setText(""); 

        } 
        Chat newChat = new Chat(q, r); 
        addQuestion(newChat); 
        txtChat.append("\n" + Arrays.toString(r)); 
       } else { 
        txtChat.append("Please enter a number bigger than 0"); 

       } 
      } else { 
       showMenu(); 
      } 
     } while (q.equalsIgnoreCase("end") == false); 
    } 

et les erreurs sont ces

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "" 
+0

Où est-ce que 'choice' est assigné? –

Répondre

1

Si txtEnter.getText() retours vide, vous obtenez:

java.lang.NumberFormatException: For input string: "" 

, car en blanc ne peut pas être convertie en nombre.

Vous devriez donc vérifier que txtEnter.getText() ne renvoie pas de blanc.

+0

Je sais, mais mon programme ne s'arrête pas pour l'utilisateur à l'entrée alors comment puis-je l'arrêter et laisser l'utilisateur entrer? – Ocean