O operador + é indefinido para o tipo de argumento String, void

public class chap7p4 { public static void main(String[] args) { int[] heights = { 33, 45, 23, 43, 48, 32, 35, 46, 48, 39, 41, }; printArray(heights); System.out.println("Average is " + findAverage(heights)); // this is where I get the error } public static void printArray(int[] array) { for (int eachNum : array) { System.out.println(eachNum + " "); } } public static void findAverage(int[] array) { int average = 0; int total = 0; for (int i = 0; i <= array.length; i++) { total = total + array[i]; } average = total / array.length; System.out.println(average); } } 

Eu recebo este erro

 "Exception in thread "main" java.lang.Error: Unresolved compilation problem: The operator + is undefined for the argument type(s) String, void" 

findAverage tem um tipo de retorno inválido. Altere o tipo de retorno do método para retornar um valor int

 public static int findAverage(int[] array) { ... return total / array.length; } 

Seu método findAverage(heights) deve retornar um valor para ser aplicado ao operador binário + , que recebe dois operantes.

você não pode fazer

String + void

findAverage método findAverage retorna void

Alterar o tipo de retorno do seu método findAverage()

isto é, void findAverage a void findAverage para void findAverage a int findAverage

 public static int findAverage(int[] array) { int total = 0; for (int i = 0; i <= array.length; i++) { total = total + array[i]; } return total / array.length; } 

Return tipo de findAverage método findAverage não deve ser vazio. Deve ser inteiro para o seu código. Você não deve imprimir o valor da média no mesmo método que você está chamando no método main.

Também aqui o argumento é do tipo int, e Operators like (*, +, ..) não funcionará para o tipo de argumento void e int, portanto, altere o tipo de argumento ou o tipo de retorno, conforme mencionado acima.