Java - 将类型为Float的Array中的值插入到float类型为float的新数组中

时间:2012-02-17 11:40:37

标签: java arrays arraylist floating-point

我有2个数组和一个ArrayList

float[] a = new float [1000]; // contains 1000 float values

float[] b = new float [1000]; // contains 1000 float values

ArrayList<Float> c = new ArrayList<Float>(); // contains unique list of float values from array a

我希望执行以下内容

for (int i=0; i<a.length; i++) {
      b[c.indexOf(c.get(i)]++; 
}

基本上,我想要查看a的长度,找到C中第一个值的位置,然后将其插入到新的数组中。

但是我返回的是索引超出范围的错误,或者是不兼容的类型错误,期望float()找到int()。

由于原始类型,我在定义float时也尝试过包装器。

任何帮助都会很棒。

4 个答案:

答案 0 :(得分:1)

这里的数组a和b都是float类型。

声明 b [c.indexOf(c.get(i)] ++; 您正在应用一个递增运算符,该运算符不适用于int数据类型。

所以要做你想要的,你必须将float类型转换为整数,而不是应用这个增量运算符。

答案 1 :(得分:0)

ArrayList<Float> c = new ArrayList<Float>(); // contains unique list of float values from array a 

由于它只包含来自a的唯一条目,因此它的长度为&lt; = a.length。因此您的例外IndexOutOfBounds

c.get(i)

if i >= c.size():它会抛出异常。

这是一个解决方案:

for (int i=0; i<a.length; i++) 
{
    if(i >= c.size())
        break;
    b[c.indexOf(c.get(i)]++;  
}

或者,只是

for (int i=0; i<c.size(); i++) 
{
    b[c.indexOf(c.get(i)]++;  
}

或者,更简单地说

for (int i=0; i<a.length; i++) 
{
    b[i]++;  
}

但是,您想对a中的重复值以及其余索引做什么?

答案 2 :(得分:0)

从你的问题看起来你想要这样的东西:

for (int i = 0; i < a.length; i++) {
    if ( c.contains(a[i]) ) { // when c contains a[i]
       b[i] = a[i];           // insert a[i] into b
    }
}

答案 3 :(得分:-1)

如果你的arraylist c没有1000个元素怎么办?

怎么样

for (int i=0; i<c.size(); i++) {
      b[c.indexOf(c.get(i)]++; 
}