0

我有一个清单如下:

List<Integer> arrInt={2,3,5};

我想将此数组列表转换为数组浮点数。

float[] result={2,3,5};

我的代码:

    public float[] convertIntToFloat(List<Integer> arr)
    {
      List<Float> arrResult=new ArrayList<Float>();

      for(int i=0;i<arr.size();i++)
      {
        float x=i;
        arrResult.add(x);
      }

      float result[]=arrResult.toArray( new float[arr.size()]);  //Error

      return result;
    }

但它在我的代码中显示错误,如上所述。你能帮助我吗?

4

4 回答 4

7

List.toArray(T[])采用 Wrapper 类型的数组,而不是原始类型。

你应该这样做:

Float result[] = arrResult.toArray( new Float[arr.size()]);  

但是,这真的不是必需的。因为,现在您必须将其转换为原始类型数组。那是不是太过分了?

您可以直接创建一个float[]数组,而不是通过ArrayList<Float>. 只需将您的arrResults声明更改为:

float[] arrResults = new float[arr.size()];

在 for 循环中,使用以下方法将元素添加到数组中:

for(int i = 0; i < arr.size(); ++i) {
    arrResults[i] = arr[i];
}
于 2013-07-28T08:21:04.947 回答
0

直接创建float数组即可:

public float[] convertIntToFloat(List<Integer> arr)
{
  float[] arrResult = new float[arr.size()];
  for(int i=0;i<arr.size();i++)
  {
    arrResult[i] = (float) arr[i];
  }

  return arrResult;
}
于 2013-07-28T08:21:16.720 回答
0

Java 中的泛型是有限的。不能使用 (new float[]) 作为 toArray 的参数。请改用 (new Float[])。然而,实际上,一个正确的实现应该是:

public float[] convertIntToFloat(List<Integer> arr)
{
  float result = new float[arr.size()];

  for(int i = 0; i < arr.size(); ++i)
  {
      result[i] = arr.get(i);
  }

  return result;
}
于 2013-07-28T08:28:23.060 回答
0

像这样做:

public Float[] convertIntToFloat(List<Integer> arr)
    {
      List<Float> arrResult=new ArrayList<Float>();

      for(int i=0;i<arr.size();i++)
      {
        float x=arr.get(i);
//      float x=i;       //Here you are retrieving index instead of value 

        arrResult.add(x);
      }

      Float result[] = arrResult.toArray( new Float[arr.size()]);  
//    float result[]=arrResult.toArray( new float[arr.size()]);  //Error

      return result;
    }
于 2013-07-28T08:29:51.547 回答