質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

4011閲覧

しりとり

msia

総合スコア33

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2015/11/09 06:16

---んが入力されたら終わらしたいのですが
できなくて困ってます
String tmp = getLast(word);
if (tmp.equals("ん")) {
..
}

これを以下のソースに入力すればいいのでしょうか?
もしいれるとしたらどの部分に記述すればいいのでしょか?
アドバイスお願いいたします。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class Shiritori1 {

private static final BufferedReader READER = new BufferedReader( new InputStreamReader(System.in));

private static final List<String> DICTIONARY = Collections
.unmodifiableList(Arrays.asList("りんご", "ごりら", "らっぱ","ぱんつ","つくし", "しりとり","しめじ","じかん","つみき","きつね","ねこ"
,"こぶた","たぬき","きりん","らーめん","るいーじ","じかん","じかんわり","りす","すみれ","れんげ","げーむ","むし","むかで","でんわ","わに","にく","くま","まま","ぱぱ","ぱんだ"
,"だーつ","つみれ","あつあげ","げんじ","たまご","ごはん","うんち","うんこ","こま","まんとひひ","ひつじ","じじい","ばばあ","あり"
,"りゅう","うま","まり","るーれっと","とびら","らま","るーる","るすばん","るすばんでんわ","るーつ","つーる","るみな","みなと","とど","だいこん"
,"こんぽた","たーみなる","いか","かみなり","りーまんしょっく","くじら","らくだ","だんべる","あいおう","あいおふたじま","あいおわあいおわん"
,"あいおーしー","あいおーでーたきき","あいか","あいかい","あいかぎ","あいかこうぎょう","あいかた","あいかっぷ",
"あいかっぷさき","あいかはんばい","あいかみ","あいかわ","あいかわがわ","あいかわぐみあいかわっ","あいかわてっこう",
"あいかわみなみ","あいかわら","あいかわらず","あいかわり","おきなわ","あいかわる","あいかわれ","あいかわろ",
"あいかわん","あいかん","あいが","あいがちょうきただに","あいがちょうなかた","あいがちょうふるみや","あいがちょうへい","あんうら","あいがちょうみやのはら"
,"あいがちょうやまだはら","あいがも","あいがわ","あいがん","あいがー","あいき","あいきがわ","あいきち","あいきつ","あいきどう","あいきゃく","あいきゃっと","あいきょう"
,"あいきょうげん","あいきょうさんぎょう","あいぎ","あいぎがおかvあいぎん","あいく","あいくち","あいくぼ","あいくぼやま","あいくるし","あいくるしい","るみな","あいくるしから"
,"あいくるしかれ","あいくるしかろ","あいくるしき","かさ","あいくるしく","きす","ささみ","あいくるしけれ","みず","あいくるしゅう","あいけい","あいけん"
,"あいこ","あいこう","あいこうがくえん","あいこうだい","あいこうだいめいでん","あいこうでんき","あいこく","あいこく","いざかや","あいこく","あるふぁえんじに","ありんぐ","あいこくがくえん"
,"あいこくがくえんじょしたんきだいがく","あいこくがくえんじょしたんだい","あいこくがくせいれんめい","あいこくさんぎょう","あいこくしん","あいこくにし","あいこくひがし","あいこごう","あいこしかけ"
,"あいこだけ","あいこっと","あいことば","あいこむ","あいこー","あいご","あいごう","さかな","なす","あな","もぐら","ゆみや","やかん","てれび","びーむ","こんにゃく","じかんわりひょう","うみ","ふぐ"
,"どりる","るーまにあ","あるみほいる","ぐみ","みかん","つるはし","おにぎり","たたき","きじ","りす","れんげ","げんじな","なのはな","ばっふぁろー","かわ","くろこだいる","ひる","あさ","よる","ことり","おとり"
,"つむじ","ぶらんど","どらえもん","どらやき","ぬま","そっくす","すずむし","しりとり","こあら","らくだ","だちょう","だいこん","しらたき","いとこんにゃく","はんてん","はんこ","そーせーじ","ういんなー"
,"ないるがわ","わこーる","るぱんさんせい","いぬ","ふらんだーす","あにめ","ほうちょう","はさみ","のり","かご","とりかご","ごしっぷ","ぷーさん","ぴぐれっと","みっきー","みにー","どなるど","ぐーふぃー","いーよー","ぽけもん",
"らくらい","どうわ","わんこ","わんこそば","ばにく","ぶたにく","くく","くに","にんにく","くさ","さい","さしみ","みんみんぜみ","しんぶんし","かがみ","しょうゆ","みりん","さとう","おなら","げっぷ"
,"ぷーわーる","えご","えみ","えり","えど","えさ","えい","えこ","えりんぎ","えら","えし","しみ","しらす","すすき","かふん","かなぶん","つなみ"));
private static final List<String> USED = new ArrayList<String>();

private static final Random RANDOM;
static {
try {
RANDOM = SecureRandom.getInstanceStrong();
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}

public static void main(String[] args) throws IOException {
String yours = DICTIONARY.get(RANDOM.nextInt(DICTIONARY.size()));
System.out.println(new StringBuilder().append("じゃあねー最初は[").append(yours)
.append(']').append("だよ"));

for (;;) { final String mine = READER.readLine(); if (mine.isEmpty()) { continue; } if(mine.endsWith("ん")) { if(mine.equals("!")){ System.out.println("you lose"); break; } if (yours.charAt(yours.length() - 1) != mine.charAt(0)) { System.out.println(new StringBuilder().append("その単語[") .append(yours.charAt(yours.length() - 1)) .append("]で始まってないじゃん!")); } if (!DICTIONARY.contains(mine)) { System.out.println("その単語知らない!知ってそうな単語を入力して!"); break; } if(USED.contains(mine)){ System.out.println("その単語使ったよ!忘れたとはいわせないよ!"); break; } USED.add(mine); List<String> result = search(mine.charAt(mine.length() - 1)); if (result.isEmpty()) { System.out.println("もうわかんない...you win!!"); return; } yours = result.get(RANDOM.nextInt(result.size())); if(USED.contains(yours)){ System.out.println(new StringBuilder().append('[').append(yours).append(']') .append("は言ったっけー.わかんない..you win!!!")); return; } System.out.println(new StringBuilder().append("じゃあ[") .append(yours).append(']').append('!'));

}
}
}
public static final List<String> search(char firstChar) {
List<String> result = new ArrayList<>();
for (String word : DICTIONARY) {
if (word.charAt(0) == firstChar) {
result.add(word);
}
}
return result;
}

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takato

2015/11/09 08:18

初めまして。スクリプト言語やコードを使用する際は</>で入力する前にまとめてください。 それと何をしたいのかが具体的にわかりにくいです。 5W1Hをイメージし質問しなおしてください。 このままだと誰も答えられないです。
guest

回答2

0

まず,あなたのコードでは,getLast()の中身が書かれていないため,なんともいえません.
'ん'の判定箇所は↓の3箇所かと感じます./* ここで'ん'の判定をするか */で検索してください.

Java

1import java.io.BufferedReader; 2import java.io.IOException; 3import java.io.InputStreamReader; 4import java.security.SecureRandom; 5import java.util.ArrayList; 6import java.util.Arrays; 7import java.util.Collections; 8import java.util.List; 9import java.util.Random; 10 11public class Shiritori1 { 12 13 /** 14 * 標準入力[具体的にはキーボード]から読み取るためのリーダー 15 * 16 * @param System.in 17 * 標準入力,バイトストリームで出力される 18 * @param InputStreamReader 19 * 人には読みにくいバイトストリームをキャラクターストリームに変換するラップ 20 * @param BufferedReader 21 * InputStreamReaderの効率を上げるためのラップ[必須ではないが,あった方がよい] 22 */ 23 private static final BufferedReader READER = new BufferedReader(new InputStreamReader(System.in)); 24 25 /** 26 * ゲームに使用可能な単語一覧 27 * 28 * @param Arrays.asList 29 * 引数にとった要素すべてが入ったリストを作成する 30 * @param Collections.unmodifiableList 31 * リストの中身を書き換え不可にするラップ[必須ではない,個人的な趣味] 32 */ 33 private static final List<String> DICTIONARY = Collections.unmodifiableList(Arrays.asList("りんご", "ごりら", "らっぱ", 34 "ぱんつ", "つくし", "しりとり", "しめじ", "じかん", "つみき", "きつね", "ねこ", "こぶた", "たぬき", "きりん", "らーめん", "るいーじ", "じかん", "じかんわり", 35 "りす", "すみれ", "れんげ", "げーむ", "むし", "むかで", "でんわ", "わに", "にく", "くま", "まま", "ぱぱ", "ぱんだ", "だーつ", "つみれ", "あつあげ", 36 "げんじ", "たまご", "ごはん", "うんち", "うんこ", "こま", "まんとひひ", "ひつじ", "じじい", "ばばあ", "あり", "りゅう", "うま", "まり", "るーれっと", 37 "とびら", "らま", "るーる", "るすばん", "るすばんでんわ", "るーつ", "つーる", "るみな", "みなと", "とど", "だいこん", "こんぽた", "たーみなる", "いか", 38 "かみなり", "りーまんしょっく", "くじら", "らくだ", "だんべる", "あいおう", "あいおふたじま", "あいおわあいおわん", "あいおーしー", "あいおーでーたきき", "あいか", 39 "あいかい", "あいかぎ", "あいかこうぎょう", "あいかた", "あいかっぷ", "あいかっぷさき", "あいかはんばい", "あいかみ", "あいかわ", "あいかわがわ", "あいかわぐみあいかわっ", 40 "あいかわてっこう", "あいかわみなみ", "あいかわら", "あいかわらず", "あいかわり", "おきなわ", "あいかわる", "あいかわれ", "あいかわろ", "あいかわん", "あいかん", 41 "あいが", "あいがちょうきただに", "あいがちょうなかた", "あいがちょうふるみや", "あいがちょうへい", "あんうら", "あいがちょうみやのはら", "あいがちょうやまだはら", "あいがも", 42 "あいがわ", "あいがん", "あいがー", "あいき", "あいきがわ", "あいきち", "あいきつ", "あいきどう", "あいきゃく", "あいきゃっと", "あいきょう", "あいきょうげん", 43 "あいきょうさんぎょう", "あいぎ", "あいぎがおかvあいぎん", "あいく", "あいくち", "あいくぼ", "あいくぼやま", "あいくるし", "あいくるしい", "るみな", "あいくるしから", 44 "あいくるしかれ", "あいくるしかろ", "あいくるしき", "かさ", "あいくるしく", "きす", "ささみ", "あいくるしけれ", "みず", "あいくるしゅう", "あいけい", "あいけん", 45 "あいこ", "あいこう", "あいこうがくえん", "あいこうだい", "あいこうだいめいでん", "あいこうでんき", "あいこく", "あいこく", "いざかや", "あいこく", "あるふぁえんじに", 46 "ありんぐ", "あいこくがくえん", "あいこくがくえんじょしたんきだいがく", "あいこくがくえんじょしたんだい", "あいこくがくせいれんめい", "あいこくさんぎょう", "あいこくしん", 47 "あいこくにし", "あいこくひがし", "あいこごう", "あいこしかけ", "あいこだけ", "あいこっと", "あいことば", "あいこむ", "あいこー", "あいご", "あいごう", "さかな", 48 "なす", "あな", "もぐら", "ゆみや", "やかん", "てれび", "びーむ", "こんにゃく", "じかんわりひょう", "うみ", "ふぐ", "どりる", "るーまにあ", "あるみほいる", 49 "ぐみ", "みかん", "つるはし", "おにぎり", "たたき", "きじ", "りす", "れんげ", "げんじな", "なのはな", "ばっふぁろー", "かわ", "くろこだいる", "ひる", "あさ", 50 "よる", "ことり", "おとり", "つむじ", "ぶらんど", "どらえもん", "どらやき", "ぬま", "そっくす", "すずむし", "しりとり", "こあら", "らくだ", "だちょう", 51 "だいこん", "しらたき", "いとこんにゃく", "はんてん", "はんこ", "そーせーじ", "ういんなー", "ないるがわ", "わこーる", "るぱんさんせい", "いぬ", "ふらんだーす", 52 "あにめ", "ほうちょう", "はさみ", "のり", "かご", "とりかご", "ごしっぷ", "ぷーさん", "ぴぐれっと", "みっきー", "みにー", "どなるど", "ぐーふぃー", "いーよー", 53 "ぽけもん", "らくらい", "どうわ", "わんこ", "わんこそば", "ばにく", "ぶたにく", "くく", "くに", "にんにく", "くさ", "さい", "さしみ", "みんみんぜみ", 54 "しんぶんし", "かがみ", "しょうゆ", "みりん", "さとう", "おなら", "げっぷ", "ぷーわーる", "えご", "えみ", "えり", "えど", "えさ", "えい", "えこ", 55 "えりんぎ", "えら", "えし", "しみ", "しらす", "すすき", "かふん", "かなぶん", "つなみ")); 56 57 /** 58 * ゲーム中に1度使用した単語一覧 59 * 60 * @param ArrayList 61 * Listの実装の中で最も一般的なもの 62 */ 63 private static final List<String> USED = new ArrayList<String>(); 64 65 /** 66 * 乱数生成器 67 * 68 * @param SecureRandom 69 * Randomよりも強度の高い乱数生成器 70 */ 71 private static final Random RANDOM = new SecureRandom(); 72 73 /* Javaで最初に呼ばれるメソッド throws IOException についてはおいおい */ 74 public static void main(final String[] args) throws IOException { 75 76 /** 77 * 相手の言葉.最初はランダムに選んでみる 78 * 79 * @param DICTIONARY.size() 80 * リストの大きさを返す 81 * @param RANDOM.nextInt() 82 * [0,引数)の範囲の乱数を生成する 83 * @param DICTIONARY.get() 84 * リスト内で引数で指定された場所の中身を返す 85 */ 86 String yours = DICTIONARY.get(RANDOM.nextInt(DICTIONARY.size())); 87 88 /** 89 * 相手の言葉.最初はランダムに選んでみる 90 * 91 * @param StringBuilder 92 * Stringの結合を高速に行うクラス[必須ではない] 93 */ 94 System.out.println(new StringBuilder().append("じゃあねー最初は[").append(yours).append(']').append("だよ")); 95 /* System.out.println("じゃあねー最初は[" + yours + "]だよ"); */ /* これと意味は同じ */ 96 97 /* 使ったリストに追加 */ 98 USED.add(yours); 99 100 /* for (;;) は while (true) と等価.無限ループを表す */ 101 for (;;) { 102 103 /** 104 * キーボードから自分の返す言葉の文字列読み込み 105 * 106 * @param READER.readLine() 107 * 改行まで読み込み 108 */ 109 final String mine = READER.readLine(); 110 111 /* 空なら なにも入力せずにEnter押したから,continue でもう一度入力要求へ */ 112 if (mine.isEmpty()) { 113 continue; 114 } 115 116 /* これはおかしい */ 117 // if (mine.endsWith("ん")) { 118 119 /* "!"入力で降参 */ 120 if (mine.equals("!")) { 121 System.out.println("you lose"); 122 /* break だとループを抜ける */ 123 // break; 124 /* このコードならゲーム全体を終わっていいから */ 125 return; 126 } 127 128 /* ここで'ん'の判定をするか */ 129 130 /* コンピュータの最後の文字と 自分の最初の文字が異なるなら */ 131 if (yours.charAt(yours.length() - 1) != mine.charAt(0)) { 132 System.out.println(new StringBuilder().append("その単語[").append(yours.charAt(yours.length() - 1)) 133 .append("]で始まってないじゃん!")); 134 /* 次の入力を要求する */ 135 continue; 136 } 137 138 /* ここで'ん'の判定をするか */ 139 140 /* 辞書に含まれない単語が入力されたら */ 141 if (!DICTIONARY.contains(mine)) { 142 System.out.println("その単語知らない!知ってそうな単語を入力して!"); 143 /* break は ループを抜けるから ゲームが終わる */ 144 // break; 145 /* 次の入力を要求する */ 146 continue; 147 } 148 149 /* ここで'ん'の判定をするか */ 150 /* 私の感覚だとここ */ 151 if (mine.charAt(mine.length() - 1) == 'ん') { 152 System.out.println("んー付いてる!私の勝ち!"); 153 /* break は ループを抜けるから ゲームが終わる */ 154 // break; 155 /* 次の入力を要求する */ 156 return; 157 } 158 159 /* 使ったリストに含まれる単語が入力されたら */ 160 if (USED.contains(mine)) { 161 System.out.println("その単語使ったよ!忘れたとはいわせないよ!"); 162 /* break は ループを抜けるから ゲームが終わる */ 163 // break; 164 /* 次の入力を要求する */ 165 } 166 167 /* ここまでの条件をクリアしたら その単語は使える */ 168 169 /* 使ったリストに追加 */ 170 USED.add(mine); 171 172 /* 1文字目が自分の単語の最後の文字である単語を探す */ 173 final List<String> result = search(mine.charAt(mine.length() - 1)); 174 175 /* 空なら */ 176 if (result.isEmpty()) { 177 System.out.println("もうわかんない...you win!!"); 178 return; 179 } 180 181 /* 適当に1つ選ぶ これにより CPUの語彙に応じて確率的に負けることができる */ 182 yours = result.get(RANDOM.nextInt(result.size())); 183 184 /* 使われてたら */ 185 if (USED.contains(yours)) { 186 /* もちろん再抽選して絶対にまけないコンピュータでも良さそう */ 187 System.out.println( 188 new StringBuilder().append('[').append(yours).append(']').append("は言ったっけー.わかんない..you win!!!")); 189 return; 190 } 191 192 /* ここまでの条件を全部クリアしたら コンピュータはその単語に決定してゲームを進める */ 193 System.out.println(new StringBuilder().append("じゃあ[").append(yours).append(']').append('!')); 194 195 /* 使ったリストに追加 */ 196 USED.add(yours); 197 } 198 /* これはおかしいの ifの分 */ 199 // } 200 } 201 202 /* 辞書のうち 1文字目がfirstCharの一覧を返す */ 203 public static final List<String> search(final char firstChar) { 204 final List<String> result = new ArrayList<>(); 205 for (final String word : DICTIONARY) { 206 if (word.charAt(0) == firstChar) { 207 result.add(word); 208 } 209 } 210 return result; 211 } 212 213} 214

投稿2015/11/09 20:02

編集2015/11/09 20:07
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

msia

2015/11/10 01:11

コメントを入れていただきありがとうございます。 わかりやすく丁寧で助かります!!
guest

0

ベストアンサー

Java

1import java.io.BufferedReader; 2import java.io.IOException; 3import java.io.InputStreamReader; 4import java.security.NoSuchAlgorithmException; 5import java.security.SecureRandom; 6import java.util.ArrayList; 7import java.util.Arrays; 8import java.util.Collections; 9import java.util.List; 10import java.util.Random; 11 12public class AAA { 13 14 private static final BufferedReader READER = new BufferedReader(new InputStreamReader(System.in)); 15 16 private static final List<String> DICTIONARY = Collections 17 .unmodifiableList(Arrays.asList("りんご", "ごりら", "らっぱ","ぱんつ","つくし", "しりとり","しめじ","じかん","つみき","きつね","ねこ" 18 ,"こぶた","たぬき","きりん","らーめん","るいーじ","じかん","じかんわり","りす","すみれ","れんげ","げーむ","むし","むかで","でんわ","わに","にく","くま","まま","ぱぱ","ぱんだ" 19 ,"だーつ","つみれ","あつあげ","げんじ","たまご","ごはん","うんち","うんこ","こま","まんとひひ","ひつじ","じじい","ばばあ","あり" 20 ,"りゅう","うま","まり","るーれっと","とびら","らま","るーる","るすばん","るすばんでんわ","るーつ","つーる","るみな","みなと","とど","だいこん" 21 ,"こんぽた","たーみなる","いか","かみなり","りーまんしょっく","くじら","らくだ","だんべる","あいおう","あいおふたじま","あいおわあいおわん" 22 ,"あいおーしー","あいおーでーたきき","あいか","あいかい","あいかぎ","あいかこうぎょう","あいかた","あいかっぷ", 23 "あいかっぷさき","あいかはんばい","あいかみ","あいかわ","あいかわがわ","あいかわぐみあいかわっ","あいかわてっこう", 24 "あいかわみなみ","あいかわら","あいかわらず","あいかわり","おきなわ","あいかわる","あいかわれ","あいかわろ", 25 "あいかわん","あいかん","あいが","あいがちょうきただに","あいがちょうなかた","あいがちょうふるみや","あいがちょうへい","あんうら","あいがちょうみやのはら" 26 ,"あいがちょうやまだはら","あいがも","あいがわ","あいがん","あいがー","あいき","あいきがわ","あいきち","あいきつ","あいきどう","あいきゃく","あいきゃっと","あいきょう" 27 ,"あいきょうげん","あいきょうさんぎょう","あいぎ","あいぎがおかvあいぎん","あいく","あいくち","あいくぼ","あいくぼやま","あいくるし","あいくるしい","るみな","あいくるしから" 28 ,"あいくるしかれ","あいくるしかろ","あいくるしき","かさ","あいくるしく","きす","ささみ","あいくるしけれ","みず","あいくるしゅう","あいけい","あいけん" 29 ,"あいこ","あいこう","あいこうがくえん","あいこうだい","あいこうだいめいでん","あいこうでんき","あいこく","あいこく","いざかや","あいこく","あるふぁえんじに","ありんぐ","あいこくがくえん" 30 ,"あいこくがくえんじょしたんきだいがく","あいこくがくえんじょしたんだい","あいこくがくせいれんめい","あいこくさんぎょう","あいこくしん","あいこくにし","あいこくひがし","あいこごう","あいこしかけ" 31 ,"あいこだけ","あいこっと","あいことば","あいこむ","あいこー","あいご","あいごう","さかな","なす","あな","もぐら","ゆみや","やかん","てれび","びーむ","こんにゃく","じかんわりひょう","うみ","ふぐ" 32 ,"どりる","るーまにあ","あるみほいる","ぐみ","みかん","つるはし","おにぎり","たたき","きじ","りす","れんげ","げんじな","なのはな","ばっふぁろー","かわ","くろこだいる","ひる","あさ","よる","ことり","おとり" 33 ,"つむじ","ぶらんど","どらえもん","どらやき","ぬま","そっくす","すずむし","しりとり","こあら","らくだ","だちょう","だいこん","しらたき","いとこんにゃく","はんてん","はんこ","そーせーじ","ういんなー" 34 ,"ないるがわ","わこーる","るぱんさんせい","いぬ","ふらんだーす","あにめ","ほうちょう","はさみ","のり","かご","とりかご","ごしっぷ","ぷーさん","ぴぐれっと","みっきー","みにー","どなるど","ぐーふぃー","いーよー","ぽけもん", 35 "らくらい","どうわ","わんこ","わんこそば","ばにく","ぶたにく","くく","くに","にんにく","くさ","さい","さしみ","みんみんぜみ","しんぶんし","かがみ","しょうゆ","みりん","さとう","おなら","げっぷ" 36 ,"ぷーわーる","えご","えみ","えり","えど","えさ","えい","えこ","えりんぎ","えら","えし","しみ","しらす","すすき","かふん","かなぶん","つなみ")); 37 38 private static final List<String> USED = new ArrayList<String>(); 39 40 private static final Random RANDOM; 41 static { 42 try { 43 RANDOM = SecureRandom.getInstanceStrong(); 44 } catch (NoSuchAlgorithmException e) { 45 throw new RuntimeException(e); 46 } 47 } 48 49 public static void main(String[] args) throws IOException { 50 String yours = DICTIONARY.get(RANDOM.nextInt(DICTIONARY.size())); 51 System.out.println(new StringBuilder().append("じゃあねー最初は[").append(yours).append(']').append("だよ")); 52 for (;;) { 53 54 if (yours.endsWith("ん")) { 55 System.out.println("おわり"); 56 break; 57 } 58 final String mine = READER.readLine(); 59 60 61 if (mine.isEmpty()) { 62 continue; 63 64 } 65 66 if(mine.equals("!")){ 67 System.out.println("you lose"); 68 break; 69 } 70 71 if (yours.charAt(yours.length() - 1) != mine.charAt(0)) { 72 System.out.println(new StringBuilder().append("その単語[") 73 .append(yours.charAt(yours.length() - 1)) 74 .append("]で始まってないじゃん!")); 75 76 if (mine.endsWith("ん")) { 77 System.out.println("しかも「ん」で終わってるじゃん!負け!"); 78 break; 79 } 80 81 } 82 83 if (!DICTIONARY.contains(mine)) { 84 System.out.println("その単語知らない!知ってそうな単語を入力して!"); 85 if (mine.endsWith("ん")) { 86 System.out.println("しかも「ん」で終わってるじゃん!"); 87 } 88 System.out.println("出直してこい"); 89 break; 90 } 91 92 if(USED.contains(mine)){ 93 System.out.println("その単語使ったよ!忘れたとはいわせないよ!"); 94 break; 95 } 96 97 if (mine.endsWith("ん")) { 98 System.out.println("「ん」で終ったから負けね"); 99 break; 100 } 101 102 USED.add(mine); 103 List<String> result = search(mine.charAt(mine.length() - 1)); 104 if (result.isEmpty()) { 105 System.out.println("もうわかんない...you win!!"); 106 return; 107 } 108 yours = result.get(RANDOM.nextInt(result.size())); 109 if(USED.contains(yours)){ 110 System.out.println(new StringBuilder().append('[').append(yours).append(']') 111 .append("は言ったっけー.わかんない..you win!!!")); 112 return; 113 } 114 115 System.out.println(new StringBuilder().append("じゃあ[").append(yours).append(']').append('!')); 116 } 117 } 118 119 public static final List<String> search(char firstChar) { 120 List<String> result = new ArrayList<>(); 121 for (String word : DICTIONARY) { 122 if (word.charAt(0) == firstChar) { 123 result.add(word); 124 } 125 } 126 return result; 127 } 128} 129

投稿2015/11/09 08:41

編集2015/11/09 08:44
anonymouskawa

総合スコア856

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

anonymouskawa

2015/11/09 08:43

String tmp = getLast(word); if (tmp.equals("ん")) { .. } getLastって関数作ったほうが良かったですか?
msia

2015/11/10 01:09

ありがとうございます。ソースまで! すっきりしました。丁寧にありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問