2017-10-22 2 views
0

Hier sind die Anweisungen aus meiner Klasse:Wie kann ich meinen Chatbot eine leere Antwort erkennen lassen? Wie kann ich mit mehreren Räumen arbeiten?

Derzeit gibt das Programm eine zufällige Antwort, wenn der Benutzer nichts eingibt. Machen Sie es so, dass eine leere Eingabe bewirkt, dass das Programm mit "Bitte etwas sagen" antwortet. Um Ihnen dabei zu helfen, lernen Sie, was die trim() -Methode aus der String-Klasse macht. (Schauen Sie es in Ihrem Lehrbuch oder online nach.) Beachten Sie, dass Sie eine leere Zeichenfolge als Ergebnis erhalten, wenn Sie eine Zeichenfolge mit allen Leerzeichen zuschneiden(). Verwenden Sie dies, um sicherzustellen, dass Sie angemessen reagieren, wenn der Benutzer drei Leerzeichen eingibt!

Code:

public class Magpie2 
{ 
    /** 
    * Get a default greeting 
    * @return a greeting 
    */ 
    public String getGreeting() 
    { 
     return "Hello, let's talk."; 
    } 

    /** 
    * Gives a response to a user statement 
    * 
    * @param statement 
    *   the user statement 
    * @return a response based on the rules given 
    */ 
    public String getResponse(String statement) 
    { 
     String response = ""; 
     if (findKeyword(statement,"no") >= 0) 
     { 
      response = "Why so negative?"; 
     } 
     else if (findKeyword(statement,"mother") >= 0 
       || findKeyword(statement,"father") >= 0 
       || findKeyword(statement,"sister") >= 0 
       || findKeyword(statement,"brother") >= 0) 
     { 
      response = "Tell me more about your family."; 
     } 
     else if (findKeyword(statement,"cat") >= 0 
       || findKeyword(statement,"dog") >= 0) 
     { 
      response = "Tell me more about your pets."; 
     } 
     else if (findKeyword(statement,"Levine") >= 0) 
     { 
      response = "Tell me more about your instructor."; 
     } 
     else if (findKeyword(statement,"phone") >= 0 
       || findKeyword(statement,"cellphone") >= 0 
       || findKeyword(statement,"iphone") >= 0) 
     { 
      response = "I'm smarter than your phone."; 
     } 
     else if (findKeyword(statement,"I want to") >= 0) 
     { 

     } 
     else 
     { 
      response = getRandomResponse(); 
     } 
     return response; 
    } 

Antwort

0

Die Antwort ist in der Erklärung.

„Beachten Sie, dass, wenn Sie trim() einen String aller Rohlinge, werden Sie einen leeren String als Ergebnis bekommen.“

Erweitern Sie Ihre if/else-Anweisungen ein anderes zu schließen, wenn das die Bedingung überprüft, so dass statement.trim() gleich „“ zu.

+0

Wie sollte es in Code aussehen? sonst if (statement.trim ("")> = 0) scheint nicht zu funktionieren – V4k4

+0

trimmen einer Methode für String-Klasse, die keine Parameter akzeptiert. https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim() Sie wollen sich die API anschauen. Es sieht auch so aus, als ob Sie versuchen, die Länge zu vergleichen, was wie folgt geschehen würde: statement.trim(). Length() == 0 –

Verwandte Themen