Всем привет!
поиск максимальной последовательности реализовал так:
for (int i = 1; i < 10; i++) {
if (list.get(i-1) == list.get(i)) maxLenght ++;
else {
if (maxLenght > trueMaxLenght) {
trueMaxLenght = maxLenght;
}
maxLenght = 1;
}
}
if (maxLenght > trueMaxLenght) {
trueMaxLenght = maxLenght;
}
Прогнал последовательностью из условия - всё верно. Но компилятор намекнул, что не будет работать для чисел больше 127. Проверил, и действительно, для больших чисел не работает. Поменял условие в конструкции IF:
for (int i = 1; i < 10; i++) {
if (list.get(i-1).equals(list.get(i))) maxLenght ++;
else {
if (maxLenght > trueMaxLenght) {
trueMaxLenght = maxLenght;
}
maxLenght = 1;
}
}
if (maxLenght > trueMaxLenght) {
trueMaxLenght = maxLenght;
}
Заработало.
Но так и не смог понять, почему
(list.get(i-1) == list.get(i))
даёт true для пары чисел меньше 127, и false для чисел больше?
Где-то происходит усечение до byte?