#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 записей.