Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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,接收错误: Pay.java:81:error:变量hourlyWage可能没有 初始化的JOptionPane.showMessageDialog(null,hourlyWage) 对于以下代码。声明doublehourlyWage,这些语句位于主参数内。看不到我错过了什么,是吗 if(skillInt == 1){ hourlyWage = 17.00; } else if(skillInt == 2){ hourlyWage = 20.00; } else if(skill

接收错误:

Pay.java:81:error:变量
hourlyWage
可能没有 初始化的
JOptionPane.showMessageDialog(null,hourlyWage)

对于以下代码。声明double
hourlyWage
,这些语句位于主参数内。看不到我错过了什么,是吗

if(skillInt == 1){
    hourlyWage = 17.00;
} else if(skillInt == 2){
    hourlyWage = 20.00;
} else if(skillInt == 3){
    hourlyWage = 22.00;
}
JOptionPane.showMessageDialog(null, hourlyWage);

您需要启动
hourlyWage

double hourlyWage = 0;     // or some other value
if(skillInt == 1) {
// ...

您需要启动
hourlyWage

double hourlyWage = 0;     // or some other value
if(skillInt == 1) {
// ...

hourlyWage
if
语句中获取其值。所以这条线有可能被跳过

if
之前添加默认初始化,如下所示:

double hourlyWage = 0.0;

只有在读取变量之前,在所有执行分支中将值写入变量时,才可能只声明不带值的变量。因此,在
else
分支中添加一个值也可以解决您的问题。仅在
else if
分支中添加值类似于仅使用if分支。

hourlyWage
if
语句中获取其值。所以这条线有可能被跳过

if
之前添加默认初始化,如下所示:

double hourlyWage = 0.0;

只有在读取变量之前,在所有执行分支中将值写入变量时,才可能只声明不带值的变量。因此,在
else
分支中添加一个值也可以解决您的问题。仅在
else if
分支中添加值类似于仅使用if分支。

消息指出,可能(如果
skillInt
不在
{1,2,3}
中)使用未初始化的变量(hourlyWage)。首先用一些值初始化它:

hourlyWage = 0;
if (skillInt == 1)
    //...
或添加
else
块:

//...
else if (skillInt == 3)
    hourlyWage = 22.0;
else
    hourlyWage = 0;
如果
skillInt
的唯一可能值是{1,2,3},那么您可能希望仅使用
else
移动第三个
If
块:

//...
else {
    hourlyWage = 22.0;
}
顺便说一下,更漂亮的方法是
开关
操作员:

switch (skillInt) {
    case 1 : hourlyWage = 17.0;
        break;
    case 2 : hourlyWage = 20.0;
        break;
    case 3 : hourlyWage = 12.0;
        break;
    default : hourlyWage = Double.POSITIVE_INFINITY;
}

消息指出,可能(如果
skillInt
不在
{1,2,3}
中)您使用了未初始化的变量(hourlyWage)。首先用一些值初始化它:

hourlyWage = 0;
if (skillInt == 1)
    //...
或添加
else
块:

//...
else if (skillInt == 3)
    hourlyWage = 22.0;
else
    hourlyWage = 0;
如果
skillInt
的唯一可能值是{1,2,3},那么您可能希望仅使用
else
移动第三个
If
块:

//...
else {
    hourlyWage = 22.0;
}
顺便说一下,更漂亮的方法是
开关
操作员:

switch (skillInt) {
    case 1 : hourlyWage = 17.0;
        break;
    case 2 : hourlyWage = 20.0;
        break;
    case 3 : hourlyWage = 12.0;
        break;
    default : hourlyWage = Double.POSITIVE_INFINITY;
}

编译器表示它相信存在一个可能的代码路径,这意味着变量在未初始化的情况下使用


首选的修复方法是在创建时将其初始化为默认值,但如果失败,请确保if/else链在设置默认值的无条件else块中结束。

编译器表示它认为存在一个可能的代码路径,这意味着在未初始化的情况下使用变量


首选的修复方法是在创建时将其初始化为默认值,但如果失败,请确保if/else链在设置默认值的无条件else块中结束。

在代码中,如果skillInt不等于1、2或3,则根本不分配hourlyWage。如果hourlyWage有一个合适的默认值,它适用于除1、2或3之外的所有可能的skillInt值,那么您可以通过在If/else(
double hourlyWage=XX.XX;
)之上进行设置,或者在无条件的else分支中进行设置:
}else{hourlyWage=XX.XX;}
。(将默认值替换为XXs。)

我写这篇文章是因为其他四个答案忽略了一些重要的东西

如果(似乎更有可能)当skillInt的值不被理解时,hourlyWage没有可以正确使用的默认值,那么盲目地将hourlyWage设置为0或其他一些无效值,并可能继续进行进一步处理无法产生正确的结果,只会加剧已经存在的错误。如果该方法无法使用skillInt的当前值,唯一正确的做法是中止处理,例如:


还要注意的是,浮点数据类型不精确且不可靠。在实际应用程序中,必须使用货币值的类型。

在代码中,如果skillInt不等于1、2或3,则根本不指定hourlyWage。如果hourlyWage有一个合适的默认值,它适用于除1、2或3之外的所有可能的skillInt值,那么您可以通过在If/else(
double hourlyWage=XX.XX;
)之上进行设置,或者在无条件的else分支中进行设置:
}else{hourlyWage=XX.XX;}
。(将默认值替换为XXs。)

我写这篇文章是因为其他四个答案忽略了一些重要的东西

如果(似乎更有可能)当skillInt的值不被理解时,hourlyWage没有可以正确使用的默认值,那么盲目地将hourlyWage设置为0或其他一些无效值,并可能继续进行进一步处理无法产生正确的结果,只会加剧已经存在的错误。如果该方法无法使用skillInt的当前值,唯一正确的做法是中止处理,例如:


还要注意的是,浮点数据类型不精确且不可靠。在实际应用程序中,必须将类型用于货币值。

信息不足。制作一个只包含相关部分(而不是整个基线)的最小工作示例。可能重复abracadabra,它可以工作。感谢您的帮助,它可能不会进入您的IF-ELSE梯形图中。从中发送的
skillInt
值信息不足。制作一个仅包括相关零件(而非您的en)的最低工作示例