2015-07-22 2 views
2

Конечно, я мог бы просто сделать все в основном методе, но это не помогло бы мне практиковать малое, что я знаю с Java. Поэтому я сделал или попытался сделать программу усреднения, в которой вы вводите три переменные, она вычисляет среднее значение в другом методе и возвращает конечный результат. Вот мой код:Ошибка с программой усреднения (Java), (отладка)

package test; 
import java.util.Scanner; 

public class testingclass { 
    public static void main(String args[]){ 
     Scanner input = new Scanner(System.in); 

     double[] grades = new double[3]; 
     System.out.println("Enter 3 grades you want to average out: "); 
     grades[0] = input.nextDouble(); 
     grades[1] = input.nextDouble(); 
     grades[2] = input.nextDouble(); 

     display(grades); 
     System.out.println(average); 

    } 

    public static double display(double[] x){ 
     double total = 0; 
     for(int counter = 0; counter < x.length; counter++){ 
      total = total + x[counter]; 
     } 

     double average = total/x.length; 
     return average; 
    } 
} 

Так что я все сделал, но теперь я не знаю, куда идти, и когда я сделал System.out.println(average); он сказал мне, что в среднем не является переменной. Может кто-то помочь мне с этим?

ответ

3

Вы получаете сообщение об ошибке, поскольку average является локальным для вашего метода display. Попытка:

System.out.println(display(grades)); 
+0

Спасибо, сейчас работает. Еще одна вещь, вы можете объяснить команду возврата? Я не понимаю, как возвращаются такие ценности. Вы вызываете (дисплей (оценки)); в команде печати, и он автоматически знает, что вы получите команду return. Я не совсем понимаю эту концепцию. – Code123

+0

@ Code123 Вы в основном вводите 'grades' в' double [] x' параметр в вашем методе отображения, который затем обрабатывается, чтобы получить среднее значение, и возвращается double. – UnknownOctopus

+0

Другой способ сказать это, не получив слишком компьютерной науки: Оператор 'return' сообщает, что код заменяет вызов функции значением, указанным в операторе return. В вашем случае вы говорите, что код заменяет выражение 'display (grades)' на то, что вы вычисляете для 'average'. – schtever

3

average не является локальной переменной в вашем основном методе, только в методе display. Использование:

System.out.println(display(grades)); 

Подумайте об этом так, вы вызываете свой метод отображения с display(grades);, которая возвращает среднюю введенный двойного массив. В этом случае grades - это усредненный массив.

Смежные вопросы