0

変数が初期化されていない可能性があるというエラーが表示されます。通常の String データ型と if..else ステートメントを使用して決定します。これは、ユーザーに 5 枚のランダムなカードを配るプログラムです。エラーが発生するのは、if else ステートメントの最初のステートメントであると思います。変数の割り当て方法は正しく、他のプログラムでも試してみましたが、それらのプログラムで動作します。誰かがこれでバグを見つけることができますか?

import java.util.Random;
public class RandomCard 
{
public static void main(String[] args)
{
    int cardNumber;
    int cardSign;
    String sign;
    Random card = new Random();
    for(int counter = 0; counter < 5; counter++)
    {

        cardSign = card.nextInt(4);

        if(cardSign == 0)
        {
            sign = "Spades";
        }

        else if(cardSign == 1)
        {
            sign = "Hearts";
        }

        else if(cardSign == 2)
        {
            sign = "Clubs";
        }

        else if(cardSign == 3)
        {
            sign = "Diamond";
        }



        cardNumber = 1 + card.nextInt(13);
        if(cardNumber>1 && cardNumber<11)
        {
            System.out.print(sign + " ");
            System.out.println(cardNumber);
        }

        else if(cardNumber == 11)
        {
            System.out.print(sign + " ");
            System.out.println("Jack");
        }

        else if(cardNumber == 11)
        {
            System.out.print(sign + " ");
            System.out.println("Jack");
        }

        else if(cardNumber == 12)
        {
            System.out.print(sign + " ");
            System.out.println("Queen");
        }

        else if(cardNumber == 13)
        {
            System.out.print(sign + " ");
            System.out.println("King");
        }

        else if(cardNumber == 1)
        {
            System.out.print(sign + " ");
            System.out.println("ACE");
        }

    }

}

}
4

5 に答える 5

2

String sign = nullを初期化するか、elseのifステートメントの最後にデフォルト値を指定します。

if(){
} else if() {
} else {
// default value for sign here
}
于 2012-06-13T00:33:49.290 に答える
2

変化する

String sign;

String sign=null;

Java コンパイラは、その参照を読み取ったり使用したりできるようにする前に、参照に値 (null も含む) が割り当てられていることが保証されているかどうかを常にチェックします。ダン・スピテリは 、 なしでそれを行う方法の良い例String sign=nullを示しました。

于 2012-06-13T00:29:42.760 に答える
0

常にすべての変数を初期化するようにしてください。

int cardNumber = 0;
int cardSign = 0;
String sign = null;

任意の言語で。

于 2012-06-13T00:32:28.347 に答える
0

デフォルトでは、ローカル変数には初期値がありません。したがって、それらを使用する前に初期化する必要があります。

Java の String は不変であるため、 を割り当てるsign = "Spades";と、基本的に新しいオブジェクトが作成されることに注意してください。これを行うには、 または のいずれかの初期値が必要""ですnullintvariableの場合はそうではありませんcardNumber

于 2012-06-13T00:35:49.497 に答える
0

これは、盗んだり、エミュレートしたりする方がよいサンプル デザインです。

http://docs.oracle.com/javase/1.5.0/docs/guide/language/enums.html

于 2012-06-13T00:40:16.173 に答える