lundi 28 octobre 2019

How do I print the values of psn, before, and after in the code

In this code I want to print the values of psn, before, and after around line 100 in order to test a few different phrases for a chatbot. Any ideas on how to do so? I need to test some statements at the end replacing maggie.findKeyword("yesterday is today's day before.", "day", 0); with maggie.findKeyword("She's my sister", "sister", 0);

maggie.findKeyword("Brother Tom is helpful", "brother", 0);

maggie.findKeyword("I can't catch wild cats.", "cat", 0);

maggie.findKeyword("I know nothing about snow plows.", "no", 0);

and I am trying to see how the chatbot would respond to them and I am going to record them in a table in order to hopefully improve it's responses.

public class Magpie3
{
       /**
        * 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 (statement.length() == 0)
              {
                 response = "Say something, please.";
              }
              else 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
              {
                     response = getRandomResponse();
              }
              return response;
       }

       /**
        * Search for one word in phrase. The search is not case
        * sensitive. This method will check that the given goal
        * is not a substring of a longer string (so, for
        * example, "I know" does not contain "no").
        *
        * @param statement
        *            the string to search
        * @param goal
        *            the string to search for
        * @param startPos
        *            the character of the string to begin the
        *            search at
        * @return the index of the first occurrence of goal in
        *         statement or -1 if it's not found
        */
       private int findKeyword(String statement, String goal,
                     int startPos)
       {
          String phrase = statement.trim();
              // The only change to incorporate the startPos is in
              // the line below
              int psn = phrase.toLowerCase().indexOf(
                             goal.toLowerCase(), startPos);

              // Refinement--make sure the goal isn't part of a
              // word
              while (psn >= 0)
              {
                     // Find the string of length 1 before and after
                     // the word
                     String before = " ", after = " ";
                     if (psn > 0)
                     {
                             before = phrase.substring(psn - 1, psn)
                                             .toLowerCase();
                     }
                     if (psn + goal.length() < phrase.length())
                     {
                             after = phrase.substring(
                                             psn + goal.length(),
                                             psn + goal.length() + 1)
                                             .toLowerCase();
                     }

         /* determine the values of psn, before, and after at this point */

                     // If before and after aren't letters, we've
                     // found the word
                     if (((before.compareTo("a") < 0) || (before
                                     .compareTo("z") > 0)) // before is not a
                                                                                     // letter
                                     && ((after.compareTo("a") < 0) || (after
                                                     .compareTo("z") > 0)))
                     {
                             return psn;
                     }

                     // The last position didn't work, so let's find
                     // the next, if there is one.
                     psn = phrase.indexOf(goal.toLowerCase(),
                                     psn + 1);

              }

             return -1;
       }

       /**
        * Search for one word in phrase. The search is not case
        * sensitive. This method will check that the given goal
        * is not a substring of a longer string (so, for
        * example, "I know" does not contain "no"). The search
        * begins at the beginning of the string.
        *
        * @param statement
        *            the string to search
        * @param goal
        *            the string to search for
        * @return the index of the first occurrence of goal in
        *         statement or -1 if it's not found
        */
       private int findKeyword(String statement, String goal)
       {
              return findKeyword(statement, goal, 0);
       }

       /**
        * Pick a default response to use if nothing else fits.
        *
        * @return a non-committal string
        */
       private String getRandomResponse()
       {
              final int NUMBER_OF_RESPONSES = 4;
              double r = Math.random();
              int whichResponse = (int) (r * NUMBER_OF_RESPONSES);
              String response = "";

              if (whichResponse == 0)
              {
                     response = "Interesting, tell me more.";
              }
              else if (whichResponse == 1)
              {
                     response = "Hmmm.";
              }
              else if (whichResponse == 2)
              {
                     response = "Do you really think so?";
              }
              else if (whichResponse == 3)
              {
                     response = "You don't say.";
              }

              return response;
       }

       public static void main(String[] args)
       {
             Magpie3 maggie = new Magpie3();

             maggie.findKeyword("yesterday is today's day before.", "day", 0);

       }

}

Aucun commentaire:

Enregistrer un commentaire