if文 java
解決したいこと
Elizaの簡単なプログラムを作成しており
else ifの条件がif文の条件だけしか出ていないため
"次の質問は??"を6回表示させた後に
"終わりを入力"出るようにしたいです。
発生している問題・エラー
for文の中とif文の条件
該当するソースコード
java
for (int i = 0; i <= 2; i++) {
if (i <= 2) {
System.out.println("次の質問は??");
} else if (i >= 3) {
System.out.println("終わりを入力");
break;
}
全体ソースコード
package guitest;
import java.util.Random;
//イライザクラス
class Eliza {
public String hanasu(String str1) {
int k1 = 0, k2 = 0;
for (int i = 0; i <= 2; i++) {
if (i <= 2) {
System.out.println("次の質問は??");
} else if (i >= 3) {
System.out.println("終わりを入力");
break;
}
// 私は○○だよに対応
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 ("いいよ!");
/* どんな食べ物が好き?
ここで、2つの分岐条件で「イチゴが好きと答えるか、」
「私もそれが好き」と言い合わせるかの2択を行っている。
*/
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);
// 取得した乱数の値によってt天気を決める。
if (k11 == 0 && k1 == 0) {
return ("今日は晴れだね");
} else if (k11 == 1 && k1 == 1) {
return ("今日は快晴だね");
} else if (k11 == 2 && k1 == 1) {
return ("今日は曇りだね");
}
// 私は○○を食べたに対応し「おいしそう」と答える。
k1 = str1.indexOf("私は、");
k2 = str1.indexOf("を食べたんだ");
if (k1 >= 0 && k2 >= 0) {
String str2 = str1.substring(2, k2);
return (str2 + "おいしそうだね!");
}
// 私は○○してたよに対応
//値を受けとりその値に返信する。
k1 = str1.indexOf("今日は、");
k2 = str1.indexOf("してたよ!");
if (k11 >= 0 && k2 >= 0) {
String str2 = str1.substring(k1 + 2, k2);
return ("今日は" + str2 + "してたのか!");
}
k1 = str1.indexOf("そうだよ");
if (k1 >= 0)
return ("楽しそうだね!");
}
return ("会話の終了");
}
}
自分で試したこと
条件式を何度抱えて実行してみたのですがelseの処理が行われていませんでした。
0