Java 为什么这段代码总是返回一个";变量可能尚未初始化";错误?
我对java编码还不熟悉,所以如果我有点不了解,请原谅,但我的代码总是为我返回这个错误:Java 为什么这段代码总是返回一个";变量可能尚未初始化";错误?,java,Java,我对java编码还不熟悉,所以如果我有点不了解,请原谅,但我的代码总是为我返回这个错误: Main.java:15: error: variable hold might not have been initialized return hold; ^ 我的代码如下: public class Main { public static double calcPostage(double ounces) { doub
Main.java:15: error: variable hold might not have been initialized
return hold;
^
我的代码如下:
public class Main
{
public static double calcPostage(double ounces)
{
double hold;
if ((ounces <= 10) && (ounces > 0))
hold = 3;
else if (ounces > 10)
hold = ((ounces-10)*0.15)+3;
else
System.out.print("Invalid input.");
return hold;
}
public static void main(String[] args)
{
double hold;
DecimalFormat form = new DecimalFormat("0.000");
Scanner input = new Scanner(System.in);
System.out.print("Enter how heavy your package is in ounces.\n");
double ounces = input.nextDouble();
System.out.print("It will cost " + form.format(calcPostage(ounces)) + " to mail your package.");
}
}
公共类主
{
公共静态双容量(双盎司)
{
双重持有;
如果((盎司0))
保持=3;
否则,如果(盎司>10)
持有=((盎司-10)*0.15)+3;
其他的
系统输出打印(“无效输入”);
返回保持;
}
公共静态void main(字符串[]args)
{
双重持有;
十进制格式=新的十进制格式(“0.000”);
扫描仪输入=新扫描仪(System.in);
System.out.print(“以盎司为单位输入包裹的重量。\n”);
双盎司=input.nextDouble();
System.out.print(“邮寄包裹将花费”+form.format(calcPostage(盎司))+”;
}
}
这段代码中可能还有其他一些问题,因为我还不能成功地运行它,但如果有人能帮我解决这个问题,我将不胜感激。谢谢 条件if和else如果两个条件都不满足,else打印无效输入,但在这种情况下保持未初始化。 试着把 双保持=0.0; 这样就可以初始化hold。在下面的代码中:
public static double calcPostage(double ounces)
{
double hold;
if ((ounces <= 10) && (ounces > 0))
hold = 3;
else if (ounces > 10)
hold = ((ounces-10)*0.15)+3;
else
System.out.print("Invalid input.");
return hold;
}
因此,最好初始化变量,为其指定默认值或初始值
这样做:
double hold = 0.0;
使用默认值
double hold=0.0初始化它对于局部变量,所有代码路径最终都必须初始化该值。你的else
块没有。或者,如果盎司,你的IDE肯定已经在它的左边用一个小小的红十字标记警告过你,如果你点击它,你的IDE可以自动设置一个默认值。
double hold = 0.0;