我有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时也尝试过包装器。
任何帮助都会很棒。
答案 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)]++;
}