Ошибка получения неверных типов операндов для двоичного оператора ‘>’ первый тип: double [] второй тип: int

#java

#java

Вопрос:

Итак, я завершаю проект для моего профессора в школе, и я продолжаю получать этот код ошибки для своего проекта. Вот мой код:

     if(bandOrder[counter] > counterMax) {
        counterMax = bandOrder[counter].length;
    }
}
  

Комментарии:

1. bandOrder[counter] возвращает массив. вы пытаетесь сравнить массив со значением counterMax.

2. Может быть полезно включить вывод ошибки компилятора вместе с вашим кодом.

3. Какой код ошибки?

Ответ №1:

Похоже, что bandOrder это 2d массив double[][] , а counterMax — примитив int .
Итак, ваш код bandOrder[counter] вернул массив double[]
В итоге это привело к сравнению double[] с int , которое не разрешено в java, поэтому вы получаете исключение.

Ответ №2:

Похоже, вы пытаетесь найти максимальную длину в вашем массиве массивов bandOrder . Вы могли бы сделать

 if (bandOrder[counter].length > counterMax) {
    counterMax = bandOrder[counter].length;
}
  

или просто

 counterMax = Math.max(counterMax, bandOrder[counter].length);
  

Ответ №3:

 if(bandOrder[counter].length > counterMax) {
   counterMax = bandOrder[counter].length;
  }
}
  

Это то, что вы пытаетесь проверить и достичь?

Как видно из журнала ошибок, вы, безусловно, сравниваете массив bandOrder[counter] с int counterMax . Внесите вышеуказанные изменения, и он должен работать просто отлично. (если та же логика применима к вашему приложению)

Комментарии:

1. Спасибо за ваш быстрый ответ. Единственное, что теперь выдает сообщение об ошибке с надписью Main.java: 40: ошибка: счетчик переменных, возможно, не был инициализирован bandOrder = new double [счетчик][];

2. @Corbin вам придется инициализировать переменную counter чем-то вроде counter = 0 или значение counter должно быть передано в качестве аргумента, если оно используется в методе. Возможно, вы объявили counter , но ошибка ясно указывает на то, что ей не присвоено значение.