如何将布尔数组更改为双数组

How to change Boolean array to double array

我有布尔数组,我想将它们更改为双精度数组。如果位置为真,则 double 为 1,否则设置为 0。我该怎么做?

我的布尔数组:

        Boolean [] a = new Boolean [10];
        int i = 2;
        for(int x = 1; x < 7; x=x+i){
            String name = "b" + String.valueOf(x);
            a [x] = shared.getBoolean(name, false);}

我的双数组:

double [] r = new double[10];

我不知道你想用你当前的代码实现什么,但这里有一个例子:

Boolean [] a = new Boolean[10];
//fill the array a
double [] r = new double[10];

for(int x = 0; x < 10; x++){
    if(a[x]){
        r[x] = 1.0;
    }
    else{
        r[x] = 0.0;
    }
}

您可以使用for循环再次填充双数组:

    Boolean [] a = new Boolean [10];
    double [] r = new double[10];
    for(int i=0; i<a.length; i++) {
        if(a[i] != null && a[i])
            r[i] = 1d;
        else
            r[i] = 0d;
    }

如您所见,我也在检查 Boolean a[i] != null。 这是因为您正在使用数据类型布尔值的 Wrapper-Class 布尔值(大写 B)。在这种情况下,a[i] 可能为空!所以你应该在某处检查这个以避免异常。