температурный класс с массивами java

#java #arrays #methods

#java #массивы #методы

Вопрос:

Итак, я должен создать 3 массива случайных размеров от 1 до 5 элементов, используя генератор случайных чисел. Я создал метод с именем getRandomArraySize(), который делает это.

     import java.util.Random;
    
    public class TemperatureDemoWithArrays
    {
        public static int getRandomArraySize()
        {
            Random randomArray = new Random();
            
            int arraySize = randomArray.nextInt() % 5   1;
            
            int[] temperatureArray = new int[arraySize];
            
            for(int i = 0; i < temperatureArray.length; i  )
            {
                temperatureArray[i] = randomArray.nextInt();
            }
            
            return arraySize;
        }


My professor gave us a demo program to use. We're not supposed to alter it at all. Everything is under the main method. 

public static void main(String[] args)
    {
        int x;
        Temperature average;
        
        System.out.println("You will be asked to fill 3 randomly sized arrays.");
        
        Temperature[] temperatureArrayOne;
        Temperature[] temperatureArrayTwo;
        Temperature[] temperatureArrayThree;
        
        temperatureArrayOne = new Temperature[getRandomArraySize()];
        readTemperatureArray(temperatureArrayOne);
        System.out.println("The values of temperature array one are ");
        printTemperatureArray(temperatureArrayOne);
        average = getAverage(temperatureArrayOne);
        System.out.println("The average of temperature array one is "   average);

        temperatureArrayTwo = new Temperature[getRandomArraySize()];
        readTemperatureArray(temperatureArrayTwo);
        System.out.println("The values of temperature array two are ");
        printTemperatureArray(temperatureArrayTwo);
        average = getAverage(temperatureArrayTwo);
        System.out.println("The average of temperature array two is "   average);

        temperatureArrayThree = new Temperature[getRandomArraySize()];
        readTemperatureArray(temperatureArrayThree);
        System.out.println("The values of temperature array three are ");
        printTemperatureArray(temperatureArrayThree);
        average = getAverage(temperatureArrayThree);
        System.out.println("The average of temperature array three is "   average);
  

Я пытаюсь вызвать getRandomArraySize() с помощью этой строки кода Temperature[] temperatureArrayOne = new Temperature[getRandomArraySize()]; Я получаю сообщение об ошибке в этой строке с надписью Несоответствие типов: невозможно преобразовать из int[] в int . Я попытался поместить метод getRandomArraySize() внутри и снаружи основного метода. Я продолжаю получать ту же ошибку. Пожалуйста, помогите!

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

1. getRandomArraySize() возвращает массив int[] , а не int . Учитывая имя функции, я думаю, что она должна возвращать число, а не массив чисел. В настоящее время он всегда возвращает массив из 5 целых чисел, где целые числа являются случайными, и я не думаю, что это то, что вы имели в виду.

2. Вы правы, но я не должен знать, сколько чисел он будет выводить. Вот почему это случайно. Что я знаю, так это то, что он должен выводить как минимум одно число или максимум 5 чисел. Не могли бы вы дать мне несколько советов или указать мне правильное направление, как это сделать?

3. Ну, вместо new int[5]; того, чтобы вы могли инициализировать его с new int[arraySize]; помощью, и ранее вы бы установили arraySize модуль случайных чисел 5. Числовой модуль 5 даст число от 0 до 4, поэтому вы бы добавили к нему единицу, например int arraySize = randomArray.nextInt() % 5 1;

4. Итак, я все еще возвращаю temperatureArray, потому что я все еще получаю ту же ошибку?

5. Если вы проигнорируете мой первый комментарий и сделаете так, как я предложил во втором, то у вас будет функция, которая возвращает массив с 1-5 элементами, все случайные. Итак, вы закончили. Просто выведите массив в основной строке.

Ответ №1:

Из имени вашей переменной temperatureArrayOne , я думаю, вам следует просто взять первое значение вашего массива:

 Temperature[] temperatureArrayOne = new Temperature[getRandomArraySize()[0]];
  

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

1. Я не должен изменять эту часть, потому что это часть демонстрационной программы, которую мой профессор дал нам для использования. Я на самом деле изменил его в методе getRandomArraySize(). Я изменил return temperatureArray; на return temperatureArray[0]; и ошибка исчезла. Теперь я получаю еще одну ошибку. Я попытался распечатать temperatureArray в основном методе, чтобы посмотреть, выдал ли он мне хотя бы одно число, и в нем указано исключение в потоке «main» java.lang. Ошибка OutOfMemoryError: пространство кучи Java при TemperatureDemoWithArrays.main

Ответ №2:

В подробном виде вы можете сделать следующее:

  int[] sizesArray = TemperatureDemoWithArrays.getRandomArraySize();
 int size = sizesArray[0];
 Temperature[] instances = new Temperature[size];
  

Который также может быть записан как следующий:

  int[] size = TemperatureDemoWithArrays.getRandomArraySize()[0];
 Temperature[] instances = new Temperature[size];
  

Или также как следующий:

 Temperature[] instances = new Temperature[TemperatureDemoWithArrays.getRandomArraySize()[0]];
  

Обратите внимание, что для приведенного выше примера индекс 0 используется все время для получения размера. Вы можете использовать от 0 до 4, поскольку вы определили массив из 5 записей.