Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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 - Fatal编程技术网

Java 变量";总数;可能没有初始化?

Java 变量";总数;可能没有初始化?,java,Java,当我试图编译时,它不断地告诉我“total”变量未初始化的错误。我知道错误在代码的最后一行 System.out.println(("The charges are ") + money.format(total) + "\n"); 这是我的全部代码。我尽量把它格式化 导入java.util.Scanner 导入java.text.DecimalFormat 公共类互联网 { publicstaticvoidmain(字符串[]args) { String packageType;//获取购买

当我试图编译时,它不断地告诉我“total”变量未初始化的错误。我知道错误在代码的最后一行

System.out.println(("The charges are ") + money.format(total) + "\n");
这是我的全部代码。我尽量把它格式化

导入java.util.Scanner

导入java.text.DecimalFormat

公共类互联网

{

publicstaticvoidmain(字符串[]args)
{
String packageType;//获取购买的包类型的字符串
char packageLetter;//已转换字符串的字符
最终双包价格=9.95;//包底价
最终双倍套餐时间价格=2.25;//套餐额外时间价格
final int PACKAGE_A_MIN_HOURS=10;//PACKAGE A minimun HOURS
最终双包价格=14.95;//B包基价
最终双包工时价格=1.10;//包B附加工时价格
最终整数包最小小时数=20;//包最小小时数
最终双包价格=22.95;//包C基价
double hoursUsed;//使用小时数的变量
final int HOURS_MIN=0;//服务使用的最小小时数
最终双倍小时数\u MAX=744;//服务使用的最大小时数
加倍过度使用小时;//额外小时的变量
double total;//总价的变量
DecimalFormat money=新的DecimalFormat($0.00”);//美国货币格式
//读取输入
扫描仪键盘=新扫描仪(System.in);
//获取包类型,将其转换为字符,然后将其大写
系统输出打印(“哪个计划?”);
packageType=keyboard.nextLine();
packageLetter=Character.toUpperCase(packageType.charAt(0));
//用于检查包输入是否有效的case开关
开关(打包机)
{
案例“A”:
//小时数&检查输入是否有效
系统输出打印(“多少小时?”);
hourssused=keyboard.nextDouble();
如果(使用小时数<0 | |使用小时数>744)
System.out.printf(“小时数必须介于%d和%.1f之间。您输入了%.1f。\n程序结束\n”,小时数\u分钟,
小时(最大使用小时);
//计算总数
过度使用时数=使用时数-包装时数;
如果(过度使用小时<0)
过度使用小时=0;
总计=套餐价格+(过度使用小时*套餐小时价格);
打破
案例“B”:
//小时数&检查输入是否有效
系统输出打印(“多少小时?”);
hourssused=keyboard.nextDouble();
如果(使用小时数<0 | |使用小时数>744)
System.out.printf(“小时数必须介于%d和%.1f之间。您输入了%.1f。\n程序结束\n”,小时数\u分钟,
小时(最大使用小时);
//计算总数
过度使用时数=使用小时数-包装最小小时数;
如果(过度使用小时<0)
过度使用小时=0;
总计=套餐价格+(过度使用小时*套餐小时价格);
打破
案例“C”:
总计=包装价格;
打破
违约:
System.out.printf(“包必须是A、B或C。您输入了%s。\n”),packageType+
“\n编程结束”);
}
System.out.println((“费用为”)+money.format(总计)+“\n”);
}

}

这条信息非常直截了当。简单地说,如果switch case函数变为默认行为,变量
total
可能永远不会得到值。(意思是
packageLetter
不是A、B或C。)

当代码稍后尝试访问该变量时,您会得到以下结果

一种解决方案是在声明变量时将其设置为0

double total = 0;

它可能尚未初始化,因为它未达到条件。只需在声明时为其指定一个默认值0,问题就解决了

此错误消息准确地告诉您出了什么问题,这将引导您找到解决方法。在声明变量时,请考虑将其初始化为默认值。e、 g.,
双倍合计=0.0这里真的没什么好说的。重新读取错误。它并不是说它还没有初始化,而是说它可能没有初始化,比如:你在一个可能没有收到初始值的地方使用它。是的!它起作用了!非常感谢。你们两个!
double total = 0;