Java: Как мне получить переменную из второго метода для работы в третьем методе? - PullRequest
0 голосов
/ 03 ноября 2019

СПРАВОЧНАЯ ИНФОРМАЦИЯ

Я пишу Java-программу для своего класса, в которой:

  1. Массив из 10 случайных чисел между 1и 100 генерируются

  2. Приложение передает массив в метод вычисленного среднего, а затем возвращает метод вычисленного среднего в основной метод

  3. Массив и среднее значение в массиве будут переданы в метод подсчета ниже, в котором будут подсчитаны все числа, меньшие среднего, и число целых чисел <среднее будет возвращено и отображено в основном методе. </p>

Это мой начальный Java-класс, так что я пока не лучший в Java. Я программировал около полутора месяцев.

TL; DR: Моя проблема в том, что я не могу заставить среднюю переменную во втором методе работать в третьем методе для выполнения вычислений.

В третьем методе я пытался вызвать другой метод, например: calcAverage(int [] array)) и public static double countBelow (int[] array, calcAverage(array))

РЕДАКТИРОВАНИЕ:

// main method
public static void main (String[] args)
{
    final int ARRAY_LENGTH = 10;

    //array object is created
    int array[] = new int [ARRAY_LENGTH];

    //for loop that loops through the array
    for (int rand = 0; rand < array.length; rand++)
    {
        // random number generator from 1-100
        array[rand] = (int)(Math.random()*100);

    }//end of loop

    //for loop that loops through the array
    for (int rand = 0; rand < array.length; rand++)
    {
        // prints random numbers to the screen
        System.out.printf("Numbers: %d \n", array[rand]);

    } //end of for loop


    //passing the array to the second method
    calcAverage(array);

    //prints out average
    System.out.print("Average is:");
    System.out.println (calcAverage(array));

    //passing array to the third method
     countBelow(calcAverage(array));


} // end of main method

    //declaring second method for calculating average
    public static double calcAverage(int[] array)
    {

        //declaring variables for the sum and average
        double sum = 0;
        double average = 0;

        //for loop that loops through the array
        for (int rand = 0; rand < array.length; rand++)
        {
            //computes the sum of the random numbers from first method
            sum += array[rand];
        }

        //computes average
        average = (sum / array.length);

        //returns average to main method
        return average;


    } //end of second method


    //start of third method
    public static int countBelow (int[] array, double average)
    {
        int scoresBelow = 0;


        //for loop that loops through the array
        for (int rand = 0; rand < array.length; rand++)
        {


            if (array[rand] < average)
            {
                scoresBelow ++;
            }

            else {}

        }

        return scoresBelow;


    }



}//end of class ArrayTest

Я получаю сообщение об ошибке:

error: метод countBelow в классе ArrayTest не может быть применен к данным типам;countBelow (calcAverage (массив));^ обязательно: int [], дважды найдено: двойная причина: фактические и формальные списки аргументов различаются по длине 1 ошибка

Ответы [ 2 ]

0 голосов
/ 03 ноября 2019

Вам нужно либо вычислить среднее значение в основном методе и передать его countBelow, либо вычислить его в countBelow:

Первая версия - вычислить до и передатьдо countBelow

// You pass the average already computed as a double argument:
public static double countBelow (int[] array, double average) {
    // Do what you must do...
}

// In the main method:
final int[] array = ...;
final double average = calcAverage(array);
countBelow(array, average);

Вторая версия - непосредственно вычислить среднее значение в countBelow

// You only pass the array:
public static double countBelow(int[] array) {
    // You compute the average here:
    final double average = calcAverage(array);

    // Do what you must do...
}

// In the main method:
final int[] array = ...;
countBelow(array);
0 голосов
/ 03 ноября 2019

Ваш countBelow метод имеет два параметра: int[] array и результат calcAverage(array), поэтому подпись должна быть:

public static int countBelow(int[] array, double average) {
    // ...
}

Я предполагаю, что вы хотите передать результат calcAverage(array) к этому методу.

public static void main(String[] args) {
    int[] array = ...
    int count = countBelow(array, calcAverage(array));
}

Редактировать:

Как уже упоминалось, ваш метод countBelow должен возвращать натуральное число.


Edit2:

ошибка: метод countBelow в классе ArrayTest не может быть применен к данным типам;countBelow (calcAverage (массив));^ обязательный: int [], найден дважды: двойная причина: фактические и формальные списки аргументов различаются по длине 1 ошибка

Похоже, вы не соответствовали количеству параметров сейчас. Если вы определили 2 (массив и среднее), вам нужно вызвать его с помощью 2.

//passing array to the third method
countBelow(array, calcAverage(array));

Обратите внимание, что массив должен передаваться каждому методу отдельно. Передача массива в calcAverage не передает его автоматически методу countBelow.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...