0

我收到变量可能未初始化的错误。我使用普通的字符串数据类型和 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)。Dan Spiteri 给了你一个很好的例子 ,如果没有String sign=null.

于 2012-06-13T00:29:42.760 回答
0

这是一个示例设计,您最好窃取,呃模仿:

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

于 2012-06-13T00:40:16.173 回答
0

总是尝试初始化所有变量。

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

任何语言。

于 2012-06-13T00:32:28.347 回答
0

局部变量默认没有初始值。因此,您需要先进行初始化,然后才能使用它们。

请注意,Java 中的 String 是不可变的,因此当您分配时sign = "Spades";,它基本上是在创建一个新对象。为了做到这一点,它需要有它的初始值,它可以是""null。这不是int变量的情况cardNumber

于 2012-06-13T00:35:49.497 回答