如何将数组中的所有项目分成两倍?

时间:2013-08-20 16:16:28

标签: java

我是一个完全的初学者,我对数组有一点问题。 该程序的要点是计算向量的归一化。第一部分只是将数组的长度计算为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;
}

5 个答案:

答案 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();