我收到一个错误,即该变量可能未初始化。我使用普通的字符串数据类型和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");
}
}
}
}
答案 0 :(得分:2)
更改
String sign;
到
String sign=null;
Java编译器始终会检查引用是否保证具有赋值(甚至为null),然后才能读取/使用该引用。 Dan Spiteri在没有String sign=null
的情况下为您提供了good example如何做到这一点。
答案 1 :(得分:2)
初始化 String sign = null 或在else语句的if语句末尾提供默认值。
if(){
} else if() {
} else {
// default value for sign here
}
答案 2 :(得分:0)
总是尝试初始化所有变量。
int cardNumber = 0;
int cardSign = 0;
String sign = null;
用任何语言。
答案 3 :(得分:0)
默认情况下,局部变量没有初始值。因此,您需要在使用它们之前进行初始化。
请注意java中的String是不可变的,因此当您指定sign = "Spades";
时,它基本上会创建一个新对象。为了实现这一点,它需要具有可以是""
或null
的初始值。 int
变量cardNumber
不是这种情况。
答案 4 :(得分:0)
这是一个样本设计,你最好不要偷窃,模仿:
http://docs.oracle.com/javase/1.5.0/docs/guide/language/enums.html