我是一个完全的初学者,我对数组有一点问题。 该程序的要点是计算向量的归一化。第一部分只是将数组的长度计算为int,称为sum,然后我想用这个总和来划分数组v中的所有项。 normal [] = v [a] / sum;这条线显然是个问题,但我该怎么办呢?
public static double[] normalized(double[] v){
double sum = 0;
for(int counter = 0; counter < v.length; counter++){
sum += Math.pow(v[counter], 2);
}
sum = Math.sqrt(sum);
double[] normal;
for(int a = 0; a < v.length; a++){
normal[] = v[a]/sum;
}
return normal;
}
答案 0 :(得分:5)
您需要做的就是为普通数组指定一个索引,并确保初始化正常:
double[] normal = new double[v.length];
for(int a = 0; a < v.length; a++)
{
normal[a] = v[a]/sum;
}
假设你的总和是正确的。我相信这应该有用。
答案 1 :(得分:3)
有两个问题:
normal
(或者确实要创建一个数组来填充)normal
所以你想要:
double[] normal = new double[v.length];
for(int a = 0; a < v.length; a++) {
normal[a] = v[a] / sum;
}
return normal;
答案 2 :(得分:2)
试试这个
sum = Math.sqrt(sum);
double[] normal=new double[v.length];
for(int a = 0; a < v.length; a++){
normal[a] = v[a]/sum;
}
return normal;
答案 3 :(得分:2)
我认为以下是你所需要的。
double sum = 0;
for(int counter = 0; counter < v.length; counter++){
sum += Math.pow(v[counter], 2);
}
sum = Math.sqrt(sum);
double[] normal=new double[v.length];
for(int a = 0; a < v.length; a++){
normal[a] = v[a]/sum;
}
return normal;
答案 4 :(得分:0)
Java 8中的单一代码:
double[] normal = DoubleStream.of(v).map(p->p/sum).toArray();