java if文
解決したいこと
簡単なプログラムでEraizaの作成を行っています。
このEraizaでは、一問一答形式で質問したらその質問を答えるようにプログラムを組んでいます。
発生している問題・エラー
現在エラーは起こっていないのですが、if文での質問を行い違う質問をした際に前の質問が返ってくるようになってしまっています。
違う質問を行った場合違う質問で返答できるように改善したいのですがif文のどの部分を改善よいかわかっていません。
if文
package guitest;
import java.util.Random;
//イライザクラス
class Eliza {
public String hanasu(String str1) {
int k1 = 0, k2 = 0;
//私は○○が好きに対応
k1 = str1.indexOf("私は");
k2 = str1.indexOf("だよ");
if (k1 >= 0 && k2 >= 0) {
String str2 = str1.substring(k1 + 2, k2);
return ("こんにちは" + str2 + "さん");
}
//「こんにちは」が含まれるか判断
k1 = str1.indexOf("こんにちは");
if (k1 >= 0)
return ("こんにちは!");
k1 = str1.indexOf("お話しよ");
if (k1 >= 0)
return ("いいよ!");
//どんな食べ物が好き?
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 ("イチゴが好き.");
else if (t % 3 == 1)
return ("私もそれが好き");
}
//「天気」が含まれるか判断
k1 = str1.indexOf("いい天気だね");
// 0から3までの範囲で乱数を1つ生成する
Random rand = new Random();
int k11 = rand.nextInt(3);
// 取得した乱数の値によって、結果を表示する
if (k11 == 0)
{
return ("今日は晴れだね");
}
else if (k11 == 1)
{
return ("今日は快晴だね");
}
else if (k11 == 2)
{
return ("今日は曇りだね");
}
//私は○○を食べたに対応
k1 = str1.indexOf("私は");
k1 = str1.indexOf("を食べたんだ");
if (k1 >= 0 && k2 >= 0) {
String str2 = str1.substring(k1 + 2, k2);
return ( str2 + "おいしそうだね!");
}
//私は○○してたよに対応
k11 = str1.indexOf("今日は");
k2 = str1.indexOf("してたよ!");
if (k11 >= 0 && k2 >= 0) {
String str2 = str1.substring(k11 + 2, k2);
return ("今日は" + str2 + "してたのか!");
}
k11 = str1.indexOf("そうだよ");
if (k11 >= 0)
return ("楽しそうだね!");
return("会話の終了");
}
}
または、問題・エラーが起きている画像をここにドラッグアンドドロップ
該当するソースコード
// 取得した乱数の値によって、結果を表示する
if (k11 == 0)
{
return ("今日は晴れだね");
}
else if (k11 == 1)
{
return ("今日は快晴だね");
}
else if (k11 == 2)
{
return ("今日は曇りだね");
}
自分で試したこと
何度か k11==0 の条件式を変えたりしているのですが変わっていませんでした。
0