Java - 2 массива типа float - возможна потеря точности: float требуется: int - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть 2 массива типа float

float[] a = new float [100]; 
float[] b = new float [100]; 

Я хочу выполнить следующее

for (int i=0; i<100; i++) {
      a[b[i]]++ // Or a[b[i]] + a[b[i]] + 1;
}

Обнаружена ошибка возможной потери точности: требуется float: int

Ответы [ 5 ]

1 голос
/ 17 февраля 2012
a[b[i]]

b[i] - это число с плавающей точкой, поэтому вы пытаетесь использовать число с плавающей точкой в ​​качестве индекса массива.Сообщение об ошибке говорит вам, что вы используете float, но вам нужен int.

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

Все уже отметили, что индексы массива являются целыми числами, но если вы приведете с использованием int(b[i], вы можете получить ошибку округления.Попробуйте сначала округлить его, а затем разыграть:

a[int(Math.round(b[i])]++
0 голосов
/ 17 февраля 2012

Я не хочу быть грубым, но почему?

Независимо от того, что вы не можете ссылаться на индекс массива со значением с плавающей запятой, и именно поэтому вы получаете эту ошибку.Если вам действительно нужно, вам нужно привести значение b [i] к int.

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

Индексы массивов являются целыми числами, поэтому вы не можете использовать float, чтобы попытаться получить доступ к определенному элементу в массиве. Вам нужно будет либо изменить типы ваших массивов, либо преобразовать число с плавающей точкой из b[i] в int, а затем использовать его в качестве индекса для доступа к a.

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

вы не можете использовать float, возвращаемый массивом "b" для доступа к массиву "a".Вы должны привести к int.

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