放送大学・Java、最終課題
「8.2 自動会話プログラムの作成」で述べた簡単な自動会話プログラムを完成させよ。
1. ELIZAクラスを修正し,なるべく会話が連続するよう,アルゴリズムを工夫する
2. WordまたはPDF形式で作成し,ファイル名は「8-4 最終レポート」
3.「プログラムのソースコード」を含むこと、プログラムのそれぞれの部分が何を行っているかのコメントを付与すること
4.「実行画面の画面キャプチャ」を含むこと
5. あまりに類似性が高いレポートがあった場合は,一括で減点
—
□ソースコード(修正点は赤字)
//会話プログラム
/*
* GUItest
*/
//package guitest;
import javax.swing.*;
import java.awt.event.*;
/**
*
* @author yasutaka ono
*/
public class GUItest {
/**
* @param args the command line arguments
*/
static JFrame myframe= new JFrame("GUItest");
static JTextField mytextfield = new JTextField();
static JButton mybutton= new JButton("OK");
static JTextArea mytextarea= new JTextArea();
static Eliza myEliza=new Eliza();
public static void main(String[] args) {
// TODO code application logic here
myframe.setBounds(100, 100, 640, 480);
myframe.setVisible(true);
myframe.setLayout(null);
myframe.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE);
myframe.add(mytextfield);
mytextfield.setBounds(10, 10, 500, 50);
myframe.add(mytextarea);
mytextarea.setBounds(10, 70,600,360);
myframe.add(mybutton);
mybutton.setBounds(520, 10, 100, 50);
mybutton.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
//ここにボタンをクリックした場合の処理
mytextarea.setText(mytextarea.getText()+"\n"
+ mytextfield.getText()+"\n"
+"Eliza:「"
+myEliza. hanasu(mytextfield.getText())+"」");
}
}
);
}
}
//Elizaクラス
class Eliza{
public String hanasu(String str1){
int k1=0,k2=0,k3=0;
//「こんにちは」が含まれるか判断
k1=str1.indexOf("こんにちは");
if(k1>=0) return("ちわ!");
//Add script
//「hello」が含まれるか判断
k1=str1.indexOf("hello");
if(k1>=0) return("日本語でおk");
//Add script
//私は○○が好きに対応
k1=str1.indexOf("私は");
k2=str1.indexOf("が好き");
if(k1>=0 && k2>=0){
String str2=str1.substring(k1+2,k2);
return("あなたが好きなのは「"+str2+"」ですね?");
}
//どんな食べ物が好き?
k1=str1.indexOf("食べ物");
k2=str1.indexOf("好き");
if(k1>=0 && k2>=0){
java.util.Date d = new java.util.Date();
long t=d.getTime();
if(t%3==0)
return("Elizaは夏みかんが好き.");
else if(t%3==1)
return("あなたは,何が好きなの?");
else
return("今,おなかいっぱい.");
}
//Add script
//どんな放送大学の科目が好き?
k1=str1.indexOf("放送大学");
k2=str1.indexOf("科目");
k3=str1.indexOf("好き");
if(k1>=0 && k2>=0 && k3>=0){
java.util.Date d = new java.util.Date();
long t=d.getTime();
if(t%3==0)
return("ElizaはJavaプログラミングの基礎('16)が好き.");
else if(t%3==1)
return("あなたは,何が好きなの?");
else
return("今,おなかいっぱい.");
}
return "え,何?";
}
}
—
□画面キャプチャ(※Chromebookのため実行環境はVisual Studio Code)