0

私はアンドロイド用のアプリに取り組んでいますが、いくつかの点で苦労しています。それらの 1 つは、次の色 (4 つのうち) を選択することですが、選択した色がすでに空である可能性があることに注意してください。この場合、4 つの色の次の色が選択されます。

私には2つの方法がありますが、そのうちの1つはコードが多すぎて、もう1つはクラッシュを引き起こしています(無限ループに陥る可能性があるためだと思います)

前もって感謝します

public void nextColor(Canvas canvas) {
    Random rnd = new Random(System.currentTimeMillis());
    int theNextColor = rnd.nextInt(4);
    switch (theNextColor) {
    case 0:
        if (!blue.isEmpty()) {
            currentPaint = paintBlue;
        } else
            nextColor(canvas);

    case 1:
        if (!grey.isEmpty()) {
            currentPaint = paintGray;
        } else
            nextColor(canvas);
    case 2:
        if (!gold.isEmpty()) {
            currentPaint = paintGold;
        } else
            nextColor(canvas);
    case 3:
        if (!red.isEmpty()) {
            currentPaint = paintRed;
        } else
            nextColor(canvas);
    }
4

1 に答える 1

0

4 色すべてを選択するとどうなりますか?

とにかく、これは再帰呼び出しが必要な状況ではないようです。次のようなことを試してください。

public void nextColor(Canvas canvas) {
    Random rnd = new Random(System.currentTimeMillis());
    int theNextColor;
    boolean colorFound = false;

    while (!colorFound) {
       theNextColor = rnd.nextInt(4);
       if (theNextColor == 0) {
         currentPaint = paintBlue;
         colorFound = true;
       } else if (theNextColor == 1) {
         currentPaint = paintGray;
         colorFound = true;
       } else if (theNextColor == 2) {
         currentPaint = paintGold;
         colorFound = true;
       } else if (theNextColor == 3) {
         currentPaint = paintRed;
         colorFound = true;
       }
    }
于 2012-04-10T03:02:07.790 に答える