0

ランダムな文字列を生成するクラスファイルです。

public class RandomGen {
    static String keys() {
        String str[] = new String[25];
        str[0] = "Press A1";
        str[1] = "Press A2";
        str[2] = "Press A3";
        str[3] = "Press A4";
        str[4] = "Press A5";
        str[5] = "Press B1";
        str[6] = "Press B2";
        str[7] = "Press B3";
        str[8] = "Press B4";
        str[9] = "Press B5";
        str[10] = "Press C1";
        str[11] = "Press C2";
        str[12] = "Press C3";
        str[13] = "Press C4";
        str[14] = "Press C5";
        str[15] = "Press D1";
        str[16] = "Press D2";
        str[17] = "Press D3";
        str[18] = "Press D4";
        str[19] = "Press D5";
        str[20] = "Press E1";
        str[21] = "Press E2";
        str[22] = "Press E3";
        str[23] = "Press E4";
        str[24] = "Press E5";

        Random randomGenerator = new Random();
        int randomInt = randomGenerator.nextInt(25);
        return str[randomInt];
    }
}

これは android アクティビティ ファイルです。クラスからランダムなテキストを返し、テキスト ビューに表示しています。返された文字列が「Press A1」の場合、ユーザーは Al ボタンのみを押す必要があります。彼が他のボタンを押すと、エラーメッセージが他のテキストビューに表示されなければなりません。次回、そのテキストビューに「Press C1」と表示された場合、ユーザーは C1 ボタンのみを押す必要があります。彼が別のボタンを押すと、「間違ったボタン」というメッセージが表示されます。状態の確認方法がわかりません。私を助けてください。

    RandomGen rg = new RandomGen();
    String s;
    b[0].setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            s = rg.keys();
            tv.setText(s);
            tv2.setText("A1 is pressed");
        }
    });
    b[1].setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            s = rg.keys();
            tv.setText(s);
            tv2.setText("A2 is pressed");
        }
    });
    b[2].setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            s = rg.keys();
            tv.setText(s);
            tv2.setText("A3 is pressed");

        }
    });
    b[3].setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            s = rg.keys();
            tv.setText(s);
            tv2.setText("A4 is pressed");
        }
    });
4

2 に答える 2

0

これをテストしたい場合は、2 つの実装を持つ RandomGenerator インターフェイスを作成することをお勧めします。定義済みの結果セットを返す 1 つの実装と、答えを提供するために Random を使用する実装。

このようにして、テスト中に定義済みの RandomGenerator を使用し、アプリケーションの実行中にランダム RandomGenerator を使用できます。

以下のコードは、上で説明したセットアップを示しています。keys メソッドで IntegerGenerator を渡し、次のように使用します。

public static String keys(IntegerGenerator generator) {
    // code to create keys str
    int randomInt = generator.nextInt(str.length);
    return str[randomInt];

}

interface IntegerGenerator {
    public int nextInt(int maximum);
}

class PredefinedIntegerGenerator implements IntegerGenerator {

    private final int[] values;
    private int index;

    public PredefinedIntegerGenerator(int[] values) {
        this.values = values;
        this.index = 0;
    }

    @Override
    public int nextInt(int maximum) {
        if (index >= values.length) {
            index = 0;
        }
        return values[index];

    }
}

class RandomIntegerGenerator implements IntegerGenerator {

    private final Random random;

    public RandomIntegerGenerator(Random random) {
        this.random = random;
    }

    @Override
    public int nextInt(int maximum) {
        return random.nextInt(maximum);
    }
}
于 2012-07-19T10:03:02.233 に答える
0

ここにはコードの重複がたくさんあります。これがあなたがすべきことです、IMHO。

すべてのボタンのテキストを含む、テキストの静的最終配列を作成します。

Map<View, String>各ボタンに関連付けられたテキストを含む を作成します (ただし、Android でテキストをボタンに関連付けることが許可されている場合を除きます。この場合、このマップは必要ありません)。

ボタンごとに同じリスナーを追加します。

View.OnCliskListener theListener = new View.OnClickListener() {
    public void onClick(View buttonClicked) {
        String textOfTheButtonClicked = map.get(buttonClicked);
        if (!textOfTheButtonClicked.equals(theTextChosenRandomly)) {
            // do what you want here
        }
    }
};
于 2012-07-19T10:13:04.093 に答える