Você está na página 1de 3

import java.util.

*;
public class eliza{
/*-----------------*/
/* main() */
/*-----------------*/
public static void main(String args[]){
/* Initialization */
boolean endloop=false;
Scanner darkly = new Scanner(System.in);
Scanner currentline;
/* -end init- */
/* Print welcome message */
System.out.println("Saya Chatbot buatan kumpulan Clixter :)");
System.out.println("Awak sayang siapa?");
/* -end printing- */
/* Run a loop for I/O */
while (!endloop){
System.out.print(" ~ ");
currentline=new Scanner(darkly.nextLine().toLowerCase());
if (currentline.findInLine("babai")==null)
System.out.println(respond(currentline));//print a response
else {//Exit program if 'bye' was typed
System.out.println("Okla babai!"+
" \n**[Ada masa kita sembang lagi].**");
endloop=true;
}
}/* -end I/O loop- */
}/* -end main() - */
/*-----------------*/
/* respond() - returns a response that Eliza would return, given an input
string from the user */
/*-----------------*/
private static String respond(Scanner s){
/* Init a HashMap of keyword-response pairs */
HashMap<String,String[]> responses = new HashMap<String,String[]>();
String[] temp0={"Apa maksud awak?",
"Owh, macam tu...",
"Saya tidak pasti saya faham soalan awak.",
"Boleh awak terangkan sedikit?",
"Sungguh menarik."
};
responses.put("NOTFOUND", temp0);
String[] temp1={"Boleh awak berikan contoh?"};
responses.put("Sentiasa", temp1);
String[] temp2={"Adakah itu puncanya?"};
responses.put("sebab", temp2);
String[] temp3={"Tak perlu minta maaf."};
responses.put("minta maaf", temp3);
String[] temp4={"Adakah awak tidak yakin dengan kenyataan tersebut?"};
responses.put("mungkin", temp4);
String[] temp5={"Awak berfikiran begitu?"};
responses.put("Saya rasa", temp5);
String[] temp6={"Kita sedang berbincang tentang awak."};
responses.put("awak", temp6);
String[] temp7={"Kenapa awak berfikiran begitu?",
"Awak sangat berfikiran positif."};
responses.put("ya", temp7);
String[] temp8={"Kenapa tidak?",
"Awak pasti?"};
responses.put("tidak", temp8);
String[] temp9={"Sedih mendengar yang awak *.",
"Berapa lama awak *?",
"Awak percaya yang normal menjadi *?",
"Awak seronok menjadi *?"
};
responses.put("saya", temp9);
responses.put("saya adalah", temp9);
String[] temp10={"Kongsikan perasaan awak kepada saya",
"Awak selalu berasa *?",
"Awak gembira dengan *?",
"Kenapa awak berasa demikian?"
};
responses.put("saya rasa", temp10);
String[] temp11={"Bagi tahu saya tentang keluarga awak.",
"Awak tinggal dengan keluarga awak?",
"Adakah keluarga awak penting?"
};
responses.put("keluarga", temp11);
responses.put("mama", temp11);
responses.put("papa", temp11);
responses.put("ibu", temp11);
responses.put("ayah", temp11);
responses.put("kakak", temp11);
responses.put("abang", temp11);
responses.put("suami", temp11);
responses.put("isteri", temp11);
String[] temp12={"Apa mimpi awak?",
"Awak selalu bermimpi?",
"Siapa yang selalu hadir dalam mimpi awak?",
"Adakah mimpi sering mengganggu awak?"
};
responses.put("mimpi", temp12);
responses.put("mimpi buruk", temp12);


String[] keywords={"sentiasa","sebab","minta maaf","mungkin","saya rasa"
,
"awak","ya","tidak","saya","saya adalah","saya rasa",
"keluarga",
"mama","ibu","papa","ayah","kakak",
"abang","suami","isteri","mimpi","mimpi buruk"};
/* -end hashmap init- */

/* initialize variables */
String response="";
String[] response_array={""};
boolean found=false;
String currentkeyword="";
/* - end init - */
/* Loop through keywords */
for(int i=0; i<keywords.length;i++){
if ((s.findInLine(currentkeyword=(String)keywords[i])!=null)
&& (responses.get(currentkeyword)!=null)){
/*If a keyword is found in the current input, get a response
from HashMap and return it*/
found=true;
response_array=(String[])responses.get(currentkeyword);
response=response_array[(int)((response_array.length-1)*
Math.random())];
/* If response has a *, replace it with the remainder of
input string _with the last character removed if it is
a punctuation character_ */
if (response.indexOf('*')!=-1){
String remaining_input;
if (s.hasNext() &&
(remaining_input=s.nextLine().trim())!=null){
response = response.substring(0,response.indexOf('*'))+
remaining_input
.substring(0,remaining_input.length()-1)
+ remaining_input
.substring(remaining_input.length()-1,
remaining_input.length())
.replaceAll("[^A-Za-z]", "") +
response.substring(response.indexOf('*')+1,
response.length());
response=response.trim();
}
else
response=response.replaceAll("[*]","");
}
}
}

/*respond with a default message if no keywords were found in the
input string */
if (!found){
response_array=(String[])responses.get("NOTFOUND");
response=response_array[(int)((response_array.length-1)*
Math.random())];
}
return response;
}/*- end respond() - */
}

Você também pode gostar