public static String answer(boolean a, boolean b, boolean c, boolean d, boolean e)
{
String response;
if (a == true)
{
if (b == false)
{
if (c == true)
{
if (d == false)
{
if (e == true)
{
response = "Your animal is a goose!";
}
}
}
}
}
return response;
}
我的问题是回应。我想将它返回给主测试器,但它一直说它还没有被初始化。我认为这意味着它已经在if else之前被声明,但是它没有识别其中的初始化变量。我该如何解决这个问题?
这是用BlueJ编写的。该程序询问5个问题(布尔a-e),看看你想到的七种农场动物。 if语句决定你的答案,如果它们对应,我想返回“响应”,它将打印你选择的动物。此外,如果有更好的方法,请通知我。我是Java和编码的新手,所以任何帮助都会受到赞赏。
答案 0 :(得分:0)
Java中的局部变量(方法内部的局部变量)没有默认值。因此,为了使用它,它必须具有值。
假设a
为false
,那么到达return response;
时应返回的值是多少?您必须为其分配初始值:
String response = null;
// or String response = "";
答案 1 :(得分:0)
编译器会分析代码中的所有可能路径,并发现有可能永远不会分配response
,即不会被初始化。
您必须确保无论这些if
语句如何发挥作用,response
都会被赋予一些价值。
例如,通过给出默认值以
开头String response = "Your animal is not a goose!";
有七种动物供您选择,您可以让计算机回答它提出的问题。还有其他六种情况,如果它们都不适合,那就是用户错误。
在这种情况下,你应该首先保持未初始化,然后分支到达那七只动物和一个else
,它会抛出异常(无效输入)或分配错误信息。
因此,假设,回应应始终有作业
嗯,在您展示的代码中,情况并非如此。
如果代码非常复杂,编译器可能无法确定某些路径永远不会到达,但在您的情况下,如果添加所有动物,您应该能够获得使编译器生成的内容高兴。
答案 2 :(得分:0)
假设这是java,您需要指定
String response = null;
你应该在路上!。
如果变量在全局级别上,那么将使用默认值隐式分配它,例如对于引用类型,默认值为null,但对于方法内的变量,程序员必须显式初始化它们。 / p>
请参阅此内容,讨论为什么局部变量未在java中自动初始化: Why are local variables not initialized in Java?