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

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

ただいまの
回答率

87.94%

しりとり

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 2,930

score 13

---んが入力されたら終わらしたいのですが
できなくて困ってます
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;
}

    }


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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • takato

    2015/11/09 17:18

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

    キャンセル

回答 2

checkベストアンサー

0

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 AAA {
 
    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 (;;) {
            
            if (yours.endsWith("ん")) {
                System.out.println("おわり");
                break;
            }
            final String mine = READER.readLine();
            
        
            if (mine.isEmpty()) {
                continue;
                
            }
            
            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 (mine.endsWith("ん")) {
                    System.out.println("しかも「ん」で終わってるじゃん!負け!");
                    break;
                }
                
            }
            
            if (!DICTIONARY.contains(mine)) {
                System.out.println("その単語知らない!知ってそうな単語を入力して!");
                if (mine.endsWith("ん")) {
                    System.out.println("しかも「ん」で終わってるじゃん!");
                }
                System.out.println("出直してこい");
                break;
            }
            
            if(USED.contains(mine)){
                System.out.println("その単語使ったよ!忘れたとはいわせないよ!");
                break;
            }
            
            if (mine.endsWith("ん")) {
                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;
    }
}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/11/09 17:43

    String tmp = getLast(word);
    if (tmp.equals("ん")) {
    ..
    }

    getLastって関数作ったほうが良かったですか?

    キャンセル

  • 2015/11/10 10:09

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

    キャンセル

0

まず,あなたのコードでは,getLast()の中身が書かれていないため,なんともいえません. 
'ん'の判定箇所は↓の3箇所かと感じます./* ここで'ん'の判定をするか */で検索してください. 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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 {

    /**
     * 標準入力[具体的にはキーボード]から読み取るためのリーダー
     *
     * @param System.in
     *            標準入力,バイトストリームで出力される
     * @param InputStreamReader
     *            人には読みにくいバイトストリームをキャラクターストリームに変換するラップ
     * @param BufferedReader
     *            InputStreamReaderの効率を上げるためのラップ[必須ではないが,あった方がよい]
     */
    private static final BufferedReader READER = new BufferedReader(new InputStreamReader(System.in));

    /**
     * ゲームに使用可能な単語一覧
     *
     * @param Arrays.asList
     *            引数にとった要素すべてが入ったリストを作成する
     * @param Collections.unmodifiableList
     *            リストの中身を書き換え不可にするラップ[必須ではない,個人的な趣味]
     */
    private static final List<String> DICTIONARY = Collections.unmodifiableList(Arrays.asList("りんご", "ごりら", "らっぱ",
            "ぱんつ", "つくし", "しりとり", "しめじ", "じかん", "つみき", "きつね", "ねこ", "こぶた", "たぬき", "きりん", "らーめん", "るいーじ", "じかん", "じかんわり",
            "りす", "すみれ", "れんげ", "げーむ", "むし", "むかで", "でんわ", "わに", "にく", "くま", "まま", "ぱぱ", "ぱんだ", "だーつ", "つみれ", "あつあげ",
            "げんじ", "たまご", "ごはん", "うんち", "うんこ", "こま", "まんとひひ", "ひつじ", "じじい", "ばばあ", "あり", "りゅう", "うま", "まり", "るーれっと",
            "とびら", "らま", "るーる", "るすばん", "るすばんでんわ", "るーつ", "つーる", "るみな", "みなと", "とど", "だいこん", "こんぽた", "たーみなる", "いか",
            "かみなり", "りーまんしょっく", "くじら", "らくだ", "だんべる", "あいおう", "あいおふたじま", "あいおわあいおわん", "あいおーしー", "あいおーでーたきき", "あいか",
            "あいかい", "あいかぎ", "あいかこうぎょう", "あいかた", "あいかっぷ", "あいかっぷさき", "あいかはんばい", "あいかみ", "あいかわ", "あいかわがわ", "あいかわぐみあいかわっ",
            "あいかわてっこう", "あいかわみなみ", "あいかわら", "あいかわらず", "あいかわり", "おきなわ", "あいかわる", "あいかわれ", "あいかわろ", "あいかわん", "あいかん",
            "あいが", "あいがちょうきただに", "あいがちょうなかた", "あいがちょうふるみや", "あいがちょうへい", "あんうら", "あいがちょうみやのはら", "あいがちょうやまだはら", "あいがも",
            "あいがわ", "あいがん", "あいがー", "あいき", "あいきがわ", "あいきち", "あいきつ", "あいきどう", "あいきゃく", "あいきゃっと", "あいきょう", "あいきょうげん",
            "あいきょうさんぎょう", "あいぎ", "あいぎがおかvあいぎん", "あいく", "あいくち", "あいくぼ", "あいくぼやま", "あいくるし", "あいくるしい", "るみな", "あいくるしから",
            "あいくるしかれ", "あいくるしかろ", "あいくるしき", "かさ", "あいくるしく", "きす", "ささみ", "あいくるしけれ", "みず", "あいくるしゅう", "あいけい", "あいけん",
            "あいこ", "あいこう", "あいこうがくえん", "あいこうだい", "あいこうだいめいでん", "あいこうでんき", "あいこく", "あいこく", "いざかや", "あいこく", "あるふぁえんじに",
            "ありんぐ", "あいこくがくえん", "あいこくがくえんじょしたんきだいがく", "あいこくがくえんじょしたんだい", "あいこくがくせいれんめい", "あいこくさんぎょう", "あいこくしん",
            "あいこくにし", "あいこくひがし", "あいこごう", "あいこしかけ", "あいこだけ", "あいこっと", "あいことば", "あいこむ", "あいこー", "あいご", "あいごう", "さかな",
            "なす", "あな", "もぐら", "ゆみや", "やかん", "てれび", "びーむ", "こんにゃく", "じかんわりひょう", "うみ", "ふぐ", "どりる", "るーまにあ", "あるみほいる",
            "ぐみ", "みかん", "つるはし", "おにぎり", "たたき", "きじ", "りす", "れんげ", "げんじな", "なのはな", "ばっふぁろー", "かわ", "くろこだいる", "ひる", "あさ",
            "よる", "ことり", "おとり", "つむじ", "ぶらんど", "どらえもん", "どらやき", "ぬま", "そっくす", "すずむし", "しりとり", "こあら", "らくだ", "だちょう",
            "だいこん", "しらたき", "いとこんにゃく", "はんてん", "はんこ", "そーせーじ", "ういんなー", "ないるがわ", "わこーる", "るぱんさんせい", "いぬ", "ふらんだーす",
            "あにめ", "ほうちょう", "はさみ", "のり", "かご", "とりかご", "ごしっぷ", "ぷーさん", "ぴぐれっと", "みっきー", "みにー", "どなるど", "ぐーふぃー", "いーよー",
            "ぽけもん", "らくらい", "どうわ", "わんこ", "わんこそば", "ばにく", "ぶたにく", "くく", "くに", "にんにく", "くさ", "さい", "さしみ", "みんみんぜみ",
            "しんぶんし", "かがみ", "しょうゆ", "みりん", "さとう", "おなら", "げっぷ", "ぷーわーる", "えご", "えみ", "えり", "えど", "えさ", "えい", "えこ",
            "えりんぎ", "えら", "えし", "しみ", "しらす", "すすき", "かふん", "かなぶん", "つなみ"));

    /**
     * ゲーム中に1度使用した単語一覧
     *
     * @param ArrayList
     *            Listの実装の中で最も一般的なもの
     */
    private static final List<String> USED = new ArrayList<String>();

    /**
     * 乱数生成器
     *
     * @param SecureRandom
     *            Randomよりも強度の高い乱数生成器
     */
    private static final Random RANDOM = new SecureRandom();

    /* Javaで最初に呼ばれるメソッド throws IOException についてはおいおい */
    public static void main(final String[] args) throws IOException {

        /**
         * 相手の言葉.最初はランダムに選んでみる
         *
         * @param DICTIONARY.size()
         *            リストの大きさを返す
         * @param RANDOM.nextInt()
         *            [0,引数)の範囲の乱数を生成する
         * @param DICTIONARY.get()
         *            リスト内で引数で指定された場所の中身を返す
         */
        String yours = DICTIONARY.get(RANDOM.nextInt(DICTIONARY.size()));

        /**
         * 相手の言葉.最初はランダムに選んでみる
         *
         * @param StringBuilder
         *            Stringの結合を高速に行うクラス[必須ではない]
         */
        System.out.println(new StringBuilder().append("じゃあねー最初は[").append(yours).append(']').append("だよ"));
        /* System.out.println("じゃあねー最初は[" + yours + "]だよ"); */ /* これと意味は同じ */

        /* 使ったリストに追加 */
        USED.add(yours);

        /* for (;;) は while (true) と等価.無限ループを表す */
        for (;;) {

            /**
             * キーボードから自分の返す言葉の文字列読み込み
             *
             * @param READER.readLine()
             *            改行まで読み込み
             */
            final String mine = READER.readLine();

            /* 空なら なにも入力せずにEnter押したから,continue でもう一度入力要求へ */
            if (mine.isEmpty()) {
                continue;
            }

            /* これはおかしい */
            // if (mine.endsWith("ん")) {

            /* "!"入力で降参 */
            if (mine.equals("!")) {
                System.out.println("you lose");
                /* break だとループを抜ける */
                // break;
                /* このコードならゲーム全体を終わっていいから */
                return;
            }

            /* ここで'ん'の判定をするか */

            /* コンピュータの最後の文字と 自分の最初の文字が異なるなら */
            if (yours.charAt(yours.length() - 1) != mine.charAt(0)) {
                System.out.println(new StringBuilder().append("その単語[").append(yours.charAt(yours.length() - 1))
                        .append("]で始まってないじゃん!"));
                /* 次の入力を要求する */
                continue;
            }

            /* ここで'ん'の判定をするか */

            /* 辞書に含まれない単語が入力されたら */
            if (!DICTIONARY.contains(mine)) {
                System.out.println("その単語知らない!知ってそうな単語を入力して!");
                /* break は ループを抜けるから ゲームが終わる */
                // break;
                /* 次の入力を要求する */
                continue;
            }

            /* ここで'ん'の判定をするか */
            /* 私の感覚だとここ */
            if (mine.charAt(mine.length() - 1) == 'ん') {
                System.out.println("んー付いてる!私の勝ち!");
                /* break は ループを抜けるから ゲームが終わる */
                // break;
                /* 次の入力を要求する */
                return;
            }

            /* 使ったリストに含まれる単語が入力されたら */
            if (USED.contains(mine)) {
                System.out.println("その単語使ったよ!忘れたとはいわせないよ!");
                /* break は ループを抜けるから ゲームが終わる */
                // break;
                /* 次の入力を要求する */
            }

            /* ここまでの条件をクリアしたら その単語は使える */

            /* 使ったリストに追加 */
            USED.add(mine);

            /* 1文字目が自分の単語の最後の文字である単語を探す */
            final List<String> result = search(mine.charAt(mine.length() - 1));

            /* 空なら */
            if (result.isEmpty()) {
                System.out.println("もうわかんない...you win!!");
                return;
            }

            /* 適当に1つ選ぶ これにより CPUの語彙に応じて確率的に負けることができる */
            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('!'));

            /* 使ったリストに追加 */
            USED.add(yours);
        }
        /* これはおかしいの ifの分 */
        // }
    }

    /* 辞書のうち 1文字目がfirstCharの一覧を返す */
    public static final List<String> search(final char firstChar) {
        final List<String> result = new ArrayList<>();
        for (final String word : DICTIONARY) {
            if (word.charAt(0) == firstChar) {
                result.add(word);
            }
        }
        return result;
    }

}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/11/10 10:11

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

    キャンセル

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

  • ただいまの回答率 87.94%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る