Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何初始化一个由“";如果是“那么”;陈述_Java_Variables_If Statement - Fatal编程技术网

Java 如何初始化一个由“";如果是“那么”;陈述

Java 如何初始化一个由“";如果是“那么”;陈述,java,variables,if-statement,Java,Variables,If Statement,我正在尝试制作一个简单的代码来玩摇滚、纸牌、科幻,代码还有很多,但这是重要的部分 int comResult = (int)(Math.random() * 3); String comChoice; if (comResult == 0) { comChoice = "rock"; } else if (comResult == 1) { comChoice = "scizzors"; } else if (comResu

我正在尝试制作一个简单的代码来玩摇滚、纸牌、科幻,代码还有很多,但这是重要的部分

    int comResult = (int)(Math.random() * 3);
    String comChoice;
    if (comResult == 0) {
        comChoice = "rock";
    } else if (comResult == 1) {
        comChoice = "scizzors";
    } else if (comResult == 2) {
        comChoice = "paper";
    }

    String results;
    if (comChoice == humanChoice)
当我将计算机选项与人类进行比较时,计算机会说我没有为comChoice声明一个值,即使我将它放在if-then语句中,如何正确声明该值

您可以在条件块的末尾添加一个“else”以确保comChoice得到初始化

if (comResult == 0) {
    comChoice = "rock";
} else if (comResult == 1) {
    comChoice = "scizzors";
} else if (comResult == 2) {
    comChoice = "paper";
} else {
    comChoice = "invalid input";
}

您可以在默认情况下使用开关。

如果
comResult
不是1、2或3,那么
comChoice
将是什么?Java不允许引用未初始化的值,请将comChoice设置为null。此外,字符串比较是一种引用比较,而不是值比较。@awiebe通过将某些内容更改为对其没有意义的值(计算机不会实际选择
null
)来忽略编译器错误,这几乎不是一个好主意。相反,
if
-
else
块应使用
else
作为最后一个块,而不是
else if
。这保证了变量被正确地设置为下面的内容,这是编译器错误首先要考虑的。@ChaiT.Rex您的权利,它应该进入else状态,因为程序将进入非法状态,在无效状态下死亡要比在未知状态下继续好得多。也就是说,考虑到代码的质量,我假设错误处理对于学生来说目前没有代码运行那么重要。看起来他们在这一点上可能没有涵盖异常。因为
comChoice
代表计算机的选择,所以计算机不太可能实际输入任何内容。另一种方法是,如果(comResult==2)替换为
else
…只要在
default
情况下,您指定
comResult
一个值。。。整个问题在于有一个点需要
comResult
的值,但有一条通过程序到达该点的路径,
comResult
从未被赋值。