вызов другого метода из другого класса

#java #oop

#java #ооп

Вопрос:

Я практиковал java. И я создал метод в другом классе в том же пакете, чтобы,

 class ArraysPractice2{
    
    int n;
    int[] arr = new int[n];
    
    double averageA(int [] arr)
    {
        double ans = 0;
        int added = 0;
        int total = arr.length;
        
        for(int i = 0; i < arr.length; i  )
        {
            added = added   arr[i];
            
        }
        
        ans = added / total;
        
        return ans;
    }
    
}
 

и тогда у меня есть основной метод, имеющий следующий код,

     ArraysPractice2 aT = new ArraysPractice2();
    
    int[] testArr = new int[10];
    
    for(int i = 0; i < testArr.length; i  )
    {
        testArr[i] = i   1;
    }
    
    aT.averageA(testArr);
 

Я ожидал, что aT.averageA это даст мне среднее значение testArr массива.
Однако это мне ничего не дает.

В чем здесь проблемы?

У меня такое чувство, что я плохо понимаю ООП..

Спасибо за вашу помощь.

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

1. Это может дать вам это значение, но вы ничего с ним не делаете (например, печатаете его).

2. ах, я думал, что возврат должен дать мне значение ответа. Итак, если я хочу показать ответ, я должен поместить system.out.println не возвращаться! Отлично, спасибо за вашу помощь.

3. На самом деле довольно часто путают возврат с печатью на самых ранних этапах информатики. Я видел, как это происходило с довольно многими людьми, и я полагаю, что это то, что происходит с вами. Возврат, по сути, просто позволяет вычислять вызов функции как выражение, при этом его вычислением является возвращаемое значение. Он не выводит его на консоль и не делает с ним ничего другого. Например, double avg = aT.averageA(testArr); (надеюсь) получить среднее значение и сохранить его в double вызываемом avg .

4. Да, именно это и произошло. Ах, так он сохраняет значение вместо его печати.

5. В вашем main() вы должны выполнить System.out.println(«average = » aT.averageA(testArr));

Ответ №1:

  aT.averageA(testArr);
 

Вы не получаете / не используете значение, полученное в строке выше.

Попробуйте это:

 double res = aT.averageA(testArr);
System.out.println("aT.averageA(testArr = " res);
 

и вы должны увидеть свое значение.