AnalyzeSentence.java Source code

Java tutorial

Introduction

Here is the source code for AnalyzeSentence.java

Source

// : c12:AnalyzeSentence.java
// Look for particular sequences in sentences.
// From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002
// www.BruceEckel.com. See copyright notice in CopyRight.txt.

import java.util.StringTokenizer;

public class AnalyzeSentence {
    public static void main(String[] args) {
        analyze("I am happy about this");
        analyze("I am not happy about this");
        analyze("I am not! I am happy");
        analyze("I am sad about this");
        analyze("I am not sad about this");
        analyze("I am not! I am sad");
        analyze("Are you happy about this?");
        analyze("Are you sad about this?");
        analyze("It's you! I am happy");
        analyze("It's you! I am sad");
    }

    private static StringTokenizer st;

    private static void analyze(String s) {
        System.out.println("\nnew sentence >> " + s);
        boolean sad = false;
        st = new StringTokenizer(s);
        while (st.hasMoreTokens()) {
            String token = next();
            // Look until you find one of the
            // two starting tokens:
            if (!token.equals("I") && !token.equals("Are"))
                continue; // Top of while loop
            if (token.equals("I")) {
                String tk2 = next();
                if (!tk2.equals("am")) // Must be after I
                    break; // Out of while loop
                else {
                    String tk3 = next();
                    if (tk3.equals("sad")) {
                        sad = true;
                        break; // Out of while loop
                    }
                    if (tk3.equals("not")) {
                        String tk4 = next();
                        if (tk4.equals("sad"))
                            break; // Leave sad false
                        if (tk4.equals("happy")) {
                            sad = true;
                            break;
                        }
                    }
                }
            }
            if (token.equals("Are")) {
                String tk2 = next();
                if (!tk2.equals("you"))
                    break; // Must be after Are
                String tk3 = next();
                if (tk3.equals("sad"))
                    sad = true;
                break; // Out of while loop
            }
        }
        if (sad)
            System.out.println("Sad detected");
    }

    static String next() {
        if (st.hasMoreTokens()) {
            String s = st.nextToken();
            System.out.println(s);
            return s;
        } else
            return "";
    }
} ///:~