0

我的Main方法中有这段代码:

for(int i = 0; i < 2; i++){
            double psd = JMath.sqrt((((4*cc)/(JMath.pow((1 + 6*frequency[i]*cc), (double) 5/3)))*df));              
            double cohC = H*JMath.sqrt((frequency[i]/A.averageHubWindSpeed)*(frequency[i]/A.averageHubWindSpeed) + (.12/Lc)*(.12/Lc));          
            BLAS.getInstance().sscal(packDistance.length, (float) cohC,packDistance, 1);    
}

这种方式packDistance被覆盖,因此 fori == 1sscalcohC源自at的packDistance相乘。相反,我想保留在循环外分配的相同原始值。sscali == 0packDistance

我怎么能超越这个问题?

4

1 回答 1

2

您可以使用 java 的Arrays.copyOf()方法,如下所示:

T[] arr2 = Arrays.copyOf(packDistance,packDistance.length);
for(int i = 0; i < 2; i++){
            double psd = JMath.sqrt((((4*cc)/(JMath.pow((1 + 6*frequency[i]*cc), (double) 5/3)))*df));              
            double cohC = H*JMath.sqrt((frequency[i]/A.averageHubWindSpeed)*(frequency[i]/A.averageHubWindSpeed) + (.12/Lc)*(.12/Lc));          
            BLAS.getInstance().sscal(packDistance.length, (float) cohC,packDistance, 1);    
}

其中 T 是您尝试复制的数组的数据类型。这是一个使用 Arrays.copyOf() 的示例

于 2013-06-28T10:24:33.947 回答