Revisi support system
Nama : Hafidz Panji Ashari
NRP : 5025231278
Kelas : PBO-A
Pada revisi kaliini, Saya mengubah kode program sebelumnya agar pencocokan respons dilakukan dengan mencari kata kunci sebagai substring dalam input pengguna, bukan mencocokkan seluruh input. Dan mengubah file renpose menjadi spesifik untuk masalah-masalah umum yang mungkin dihadapi pengguna ketika menginstal Windows
Jadi, kita harus melakukan hal berikut:
- Perluas Pencocokan Substring: Cek apakah input dari pengguna mengandung kata kunci yang ada sebagai substring di dalam
HashMap. - Update Logic
generateResponse(): Alih-alih langsung mencocokkan input dengan key diHashMap, lakukan pengecekan substring pada setiap kata kunci dalam input pengguna.
kode yang sudah di revisi
import java.util.HashMap;
import java.util.Random;
import java.util.Scanner;
public class SupportSystem {
private InputReader reader;
private Responder responder;
public SupportSystem() {
reader = new InputReader();
responder = new Responder();
}
public void start() {
System.out.println("Selamat datang di support system instalasi Windows.");
System.out.println("Ketik 'bye' untuk keluar dari sistem.");
boolean finished = false;
while (!finished) {
String input = reader.getInput(); // Dapatkan input dari pengguna
if (input.equalsIgnoreCase("bye")) {
finished = true;
} else {
String response = responder.generateResponse(input); // Generate response input
System.out.println(response);
}
}
System.out.println("Goodbyee .... !");
}
public static void main(String[] args) {
SupportSystem system = new SupportSystem();
system.start();
}
// Kelas InputReader sebagai inner class
private class InputReader {
private Scanner scanner;
public InputReader() {
scanner = new Scanner(System.in);
}
public String getInput() {
System.out.print("> "); // Menampilkan prompt input
return scanner.nextLine(); // Mengembalikan input dari pengguna
}
}
// Kelas Responder sebagai inner class
private class Responder {
private HashMap<String, String> responses;
private Random random;
public Responder() {
responses = new HashMap<>();
fillResponses(); // Mengisi daftar respon yang tersedia
random = new Random();
}
private void fillResponses() {
responses.put("lupaakun", "Jika Anda lupa akun, coba gunakan akun administrator
untuk masuk, atau pulihkan akun melalui opsi pemulihan.");
responses.put("lupapassword", "Jika Anda lupa password, gunakan fitur 'Lupa
Password' di layar login atau reset password melalui perangkat lain.");
responses.put("koneksi", "Pastikan kabel ethernet tersambung atau Wi-Fi aktif
untuk koneksi internet selama instalasi.");
responses.put("partisi", "Pilih partisi yang ingin Anda gunakan untuk menginstal
Windows. Hati-hati, ini dapat menghapus data pada partisi yang dipilih.");
responses.put("driver", "Jika perangkat keras tidak terdeteksi, Anda mungkin
perlu menginstal driver terbaru dari situs produsen.");
responses.put("lisensi", "Masukkan kunci lisensi Windows Anda selama instalasi.
Jika tidak, Anda bisa melanjutkan dengan memilih opsi
'Saya tidak memiliki kunci produk'.");
responses.put("boot", "Pastikan USB atau DVD instalasi dipilih sebagai prioritas
pertama di BIOS agar proses instalasi Windows bisa dimulai.");
}
public String generateResponse(String input) {
// Loop melalui semua kunci dalam HashMap
for (String keyword : responses.keySet()) {
// Jika input pengguna mengandung kata kunci sebagai substring
if (input.toLowerCase().contains(keyword.toLowerCase())) {
return responses.get(keyword);
}
}
// Mengembalikan respon acak jika tidak ada kecocokan
return generateRandomResponse();
}
private String generateRandomResponse() {
String[] defaultResponses = {
"Saya kurang paham maksudnya, bisa jelaskan lagi?",
"Maaf, saya tidak yakin bagaimana menjawab itu. Coba periksa panduan instalasi."
};
int index = random.nextInt(defaultResponses.length);
return defaultResponses[index];
}
}
}
Penjelasan Revisi Kode
Pencarian Kata Kunci Sebagai Substring:
- Di dalam
generateResponse(), kita melakukan loop melalui semua key diresponsesdan mengecek apakah input pengguna mengandung kata kunci tersebut. input.toLowerCase().contains(keyword.toLowerCase())memastikan pencocokan tidak case-sensitive.
- Di dalam
Respons Default:
- Jika tidak ada kata kunci yang ditemukan dalam input, respons acak default diberikan.
Penjelasan Daftar Respon Baru
- "lupaakun": Memberikan saran untuk menggunakan akun administrator atau opsi pemulihan.
- "lupapassword": Menjelaskan cara mengatasi lupa password dengan fitur pemulihan.
- "koneksi": Menjelaskan langkah-langkah memastikan koneksi internet selama instalasi.
- "partisi": Memberikan informasi tentang cara memilih partisi dengan hati-hati.
- "driver": Menyarankan solusi untuk masalah perangkat keras yang tidak terdeteksi.
- "lisensi": Menjelaskan cara memasukkan kunci lisensi atau opsi untuk melanjutkan tanpa lisensi.
- "boot": Instruksi untuk memprioritaskan USB atau DVD di BIOS agar instalasi dapat dimulai.
Comments
Post a Comment