Java 什么是;变量可能尚未初始化";什么意思? publicstaticdouble[]processUserInput(字符串数据){ 字符串[]数组字符串; 双[]双[]双; 整数长度; if(data.contains(“,”)){ arrayInString=data.split(“,”); 长度=arrayInString.length; for(int i=0;i

Java 什么是;变量可能尚未初始化";什么意思? publicstaticdouble[]processUserInput(字符串数据){ 字符串[]数组字符串; 双[]双[]双; 整数长度; if(data.contains(“,”)){ arrayInString=data.split(“,”); 长度=arrayInString.length; for(int i=0;i,java,variables,initialization,Java,Variables,Initialization,我使用的是Netbeans,编译器说变量arrayindoull可能尚未初始化。这意味着什么?在使用它们之前,您需要对它们进行初始化(分配一些值)。您尚未为这些变量分配任何值 public static double[] processUserInput(String data) { String[] arrayInString; double[] arrayInDouble; int length; if( data.conta

我使用的是Netbeans,编译器说变量
arrayindoull
可能尚未初始化。这意味着什么?

在使用它们之前,您需要对它们进行初始化(分配一些值)。

您尚未为这些变量分配任何值

public static double[] processUserInput(String data) {
        String[] arrayInString;
        double[] arrayInDouble;
        int length;

        if( data.contains(",") ) {
            arrayInString = data.split(",");

            length = arrayInString.length;

            for(int i = 0; i < length; i++) {
                arrayInDouble[i] = Double.parseDouble( arrayInString[i] );
            }
        }

        return arrayInDouble;

    }
这些变量是局部变量,因此在使用之前需要对其进行初始化,因为它们不会获得任何默认值

在这个

 String[] arrayInString;
 double[] arrayInDouble;
您只是在声明它们,在使用它们之前,还需要初始化:

String[] arrayInString;
double[] arrayInDouble;
其中
length
是数组的长度

PS:还有其他初始化方法,例如:

String[] arrayInString = new String[length1];
double[] arrayInDouble = new double[length2];
这不是初始化的,但是在引用它之前,您提供了一个值(
arrayInString=data.split(“,”;
),这样就没有问题了

    String[] arrayInString;

这也是未初始化的。如果输入不包含逗号,则跳过所有代码,然后尝试返回
arrayindough
的值。警告表示,当执行
返回时,
arrayindoull
可能没有值。

String[]arrayInString;双[]双[]双;您尚未初始化这些数组,这就是“为什么您收到警告,变量可能未初始化。执行此操作时,'double[]arrayindough=new double[]{};”它解决了问题,但arrayInString没有对此抱怨@Joshua您使用
arrayInString
的唯一时间是当
data.contains(“,”
为true时,在这种情况下,您需要在使用之前进行初始化。因此,编译器可以确保在使用之前初始化该变量。这里的问题是,如果
data.contains(“,”
为false,则在未初始化的情况下使用
arrayInDouble
(但您不会使用
arrayInString
,因此它不会以这种方式抱怨该变量)@Dennis Meng你的意思是因为我在最后返回arrayInDouble,所以我必须给变量赋值?那么返回的行为是调用“使用变量”?还是我错了?差不多。在返回的情况下,如果变量未初始化,您将返回什么?当我执行此操作时'double[]arrayindoull=new double[]{};'它解决了问题,但arrayInString没有对此抱怨。为什么会这样?@Joshua:因为你在这里给它赋值
arrayInString=data.split(“,”)有线事物:'String[]arrayInString=新字符串[3];'它抱怨“从未使用过赋值”…字符串是一个对象,double是原语,如果数组是java.lang.double,它将显示相同的值behaviour@Joshua这是一个错误吗?还是警告?如果这是一个警告,那就意味着你没有对数组
arrayInString
做任何事情,因为这只是为了测试,你可以忽略这个警告。@Christian可能仍然想指出,从长远来看忽略警告并不理想。我想知道我在发布这个答案时犯的错误。
    String[] arrayInString;
    double[] arrayInDouble;