【问题标题】:temperature class with arrays java带有数组java的温度类
【发布时间】:2020-10-03 19:16:41
【问题描述】:

所以,我应该使用随机数生成器创建 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()]; 我得到一个此行上的错误是 Type mismatch: cannot convert from int[] to int。我尝试将 getRandomArraySize() 方法放在 main 方法的内部和外部。我不断收到同样的错误。请帮忙!

【问题讨论】:

  • getRandomArraySize() 返回一个数组 int[],而不是 int。给定函数的名称,我认为它应该返回一个数字而不是一个数字数组。目前它总是返回一个由 5 个整数组成的数组,其中整数是随机的,我认为这不是你的意思。
  • 你是对的,但我不应该知道它会输出多少个数字。这就是为什么它是随机的。我所知道的是它应该输出至少一个数字或最多 5 个数字。你能给我一些提示或指出正确的方向吗?
  • 好吧,你可以用new int[arraySize]; 初始化它而不是new int[5];,之前你将arraySize 设置为随机数模5。数字模5 将给出一个从0 到4 的数字,所以你可以添加一个,例如int arraySize = randomArray.nextInt() % 5 + 1;
  • 那么,我是否仍然返回 temperatureArray,因为我仍然遇到同样的错误?
  • 如果您忽略我的第一条评论,并按照我在第二条中的建议进行操作,那么您将有一个函数返回一个包含 1 到 5 个条目的数组,所有条目都是随机的。所以你完成了。只需在主线中打印数组即可。

标签: java arrays methods


【解决方案1】:

从您的变量名称temperatureArrayOne 我认为您应该只取数组的 first 值:

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

【讨论】:

  • 我不应该更改那部分,因为它是我的教授给我们使用的演示程序的一部分。我实际上在 getRandomArraySize() 方法中更改了它。我改变了 return temperatureArray;返回温度数组[0];错误消失了。现在,我遇到了另一个错误。我尝试在 main 方法中打印出 temperatureArray,看看它是否至少给了我一个数字,并且它显示 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at TemperatureDemoWithArrays.main
【解决方案2】:

以详细的方式,您可以按以下方式执行:

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

也可以写成next:

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

或者也作为下一个:

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

请注意,对于上面的示例,0 索引一直用于获取大小。您可以使用 0 到 4,因为您已经定义了 5 个条目的数组。

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    相关资源
    最近更新 更多