Java - вставка значений из массива типа Float в новый массив типа float по индексу - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть 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)]++; 
}

По сути, я хочу пройти через длину, найти, гдепервое значение из C найдено, затем вставьте его в новый массив b.

Однако я возвращаюсь с ошибкой индекса из-за связанной ошибки, или ожидается ошибка несовместимого типа float (), найденная int ().

Я также экспериментировал с обертками при определении float из-за примитивных типов.

Любая помощь будет отличной.

Ответы [ 4 ]

1 голос
/ 17 февраля 2012

Здесь оба массива a и b имеют тип float.

по заявлению b [c.indexOf (c.get (i)] ++; вы применяете оператор приращения, который для типов данных int не с плавающей точкой.

Таким образом, чтобы сделать то, что вы хотите, вы должны ввести тип float в целое число, чем вы можете применить этот оператор приращения.

0 голосов
/ 17 февраля 2012

что если ваш arraylist c не имеет 1000 элементов?

как насчет

for (int i=0; i<c.size(); i++) {
      b[c.indexOf(c.get(i)]++; 
}
0 голосов
/ 17 февраля 2012

По вашему вопросу похоже, что вы хотите что-то вроде этого:

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
    }
}
0 голосов
/ 17 февраля 2012
ArrayList<Float> c = new ArrayList<Float>(); // contains unique list of float values from array a 

Поскольку он содержит только уникальные записи из a, его длина <= a.length.и, следовательно, ваше исключение <code>IndexOutOfBounds

c.get(i)

, если 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 и оставшимися индексами?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...