Nama: Muhammad Risyad Himawan Putra
NRP: 5025231205
Kelas: Pemrograman Berbasis Obyek (G)
Support System in BlueJ
Class SupportSystem
public class SupportSystem { private InputReader reader; private Responder responder; /** * Creates a technical support system. */ public SupportSystem() { reader = new InputReader(); responder = new Responder(); } /** * Start the technical support system. This will print a welcome * message and enter into a dialog with the user, until the user * ends the dialog. */ public void start() { boolean finished = false; printWelcome(); while(!finished) { String input = reader.getInput(); if(input.toLowerCase().startsWith("bye")) { finished = true; } else { String response = responder.generateResponse(input.toLowerCase()); System.out.println(response); } } printGoodbye(); } /** * Print a welcome message to the screen. */ private void printWelcome() { System.out.println("Welcome to the DodgySoft Technical Support System."); System.out.println(); System.out.println("Please tell us about your problem."); System.out.println("We will assist you with any problem you might have."); System.out.println("Please type 'bye' to exit our system."); } /** * Print a good-bye message to the screen. */ private void printGoodbye() { System.out.println("Nice talking to you. Bye..."); } }Class ini menghubungkan class InputReader yang digunakan untuk membaca inputuser dan class Responder yang digunakan untuk meng-output respons berdasarkaninput tersebut. SupportSystem juga dapat mengakhiri chat dengan meng-inputkata "bye" di terminal.Class InputReaderimport java.util.HashSet; import java.util.Scanner; public class InputReader { private Scanner reader; /** * Create a new InputReader that reads text from the text terminal. */ public InputReader() { reader = new Scanner(System.in); } /** * Read a line of text from standard input (the text terminal), * and return it as a String. * * @return A String typed by the user. */ public String getInput() { System.out.print("> "); // print prompt String inputLine = reader.nextLine(); return inputLine; } }Class ini berfungsi sebagai pembaca input dari pengguna lewat terminal.Menggunakan Scanner dari system untuk membaca input dan me-return inputmenjadi sebuah string.Class Responderimport java.util.Random; import java.util.HashMap; public class Responder { Random answerNum; private String[] answers; private HashMap<String, Integer> keywords; int allAnswers = 22; /** * Construct a Responder * generating the answer-Array and keyword-HashMap */ public Responder(){ answers(); keywordlist(); } /** * Generate a response. * @return A string that should be displayed as the response * @param ai answer-index * @param lastAnswer stores last answer-index, so it does not show up twice in row */ public String generateResponse(String input){ answerNum = new Random(); int ai = 0; int lastAnswer = 0; boolean match = false; String[] splitInput = input.split("[^a-zA-Z]"); for(int i = 0; i < splitInput.length && !match; i++){ if(keywords.containsKey(splitInput[i])){ match = true; ai = keywords.get(splitInput[i]); } } if(!match){ while(ai == lastAnswer){ ai = answerNum.nextInt(10); } } lastAnswer = ai; return answers[ai]; } /** * Setting up an Array with potential answers */ private void answers(){ answers = new String[allAnswers]; answers[0] = "Did you ask google?"; answers[1] = "Did you turn it off and on?"; answers[2] = "Keep talking, i'll get myself a coffee."; answers[3] = "ohhh my gosh..."; answers[4] = "42"; answers[5] = "i have no clue."; answers[6] = "have a break, have a kitkat"; answers[7] = "wenn's mal wieder länger dauert..."; answers[8] = "loading 31%"; answers[9] = "talk to the hand."; answers[10] = "java, java, java"; answers[11] = "Computer, Rechner, Ordenador"; answers[12] = "apple, apple, apple, ..."; answers[13] = "Microsoft, Winzigweich, pico fofo"; answers[14] = "the answer to life, the universe and everything is 42"; answers[15] = "Mac, mac, mack, muck, mick..."; answers[16] = "Aaahhh... we're all gonna die..."; answers[17] = "this might take a li'l while."; answers[18] = "printing is not good for the enviroment."; answers[19] = "which distribution?"; answers[20] = "did you try rooting it?"; } /** * setting up a HashMap with potential keywords */ private void keywordlist(){ keywords = new HashMap<String, Integer>(); keywords.put("java", 10); keywords.put("computer", 11); keywords.put("ios", 12); keywords.put("windows", 13); keywords.put("life", 14); keywords.put("mac", 15); keywords.put("crashed", 16); keywords.put("loading", 17); keywords.put("print", 18); keywords.put("linux", 19); keywords.put("android", 20); keywords.put("problem", 2); } }Class ini berfungsi untuk memberikan output berupa respons berdasarkan inputdari pengguna. Respons yang dikeluarkan berdasarkan list jawaban dan keyworddari HashMap. Jika keyword ditemukan maka akan memberikan respons yang sesuaidengan input tersebut, jika keyword tidak ditemukan maka respons akan diacakdari list respons yang ada.Cara Kerja1. Buat object SUpportSystem. Lalu start object tersebut menggunakanfungsi Start.



No comments:
Post a Comment