【问题标题】:Random Array: Getting min, max, and average随机数组:获取最小值、最大值和平均值
【发布时间】:2018-07-01 15:48:24
【问题描述】:

我正在编写一个应该用随机整数填充数组的类。数组的大小是通过扫描器类通过用户输入给出的。然后,您应该包括用于获取平均值、最小值和最大值的方法,以及用于显示随机整数的 toString 方法。我已经写出了类,但无法让方法在我的驱动程序中工作。我使用 array.getMax() 它返回一个不能应用于给定类型的 throw。而我的 String 只返回数组地址。谁能告诉我哪里出错了?

类:

import java.util.*;

public class RandomArray {

    public int size;
    private static Random gen = new Random();

    public RandomArray()
    {
        Scanner scan = new Scanner(System.in);

        System.out.print("Enter the size of the array: ");
        size = scan.nextInt();

        int[] array  = new int[size];

        for (int i = 0; i < array.length; i++)

        array[i] = gen.nextInt(50) + 1;
    }

    public int getMax(int[] array)
    {
        int max = 0;
        for (int i = 0; i < array.length; i++)

            if (array[i] > max) {
                max = array[i];
            }

        return max;
    }

    public int getMin(int[] array)
    {
        int min = 52;
        for (int i = 0; i < array.length; i++)



            if (array[i] < min) {
                min = array[i];
            }

        return min;
    }

    public double getAvg(int[] array)
    {
        double total = (double) size;
        double avg, sumOf;

        int sum = 0;


        for (int i : array)
            sum += i;

        sumOf = (double) sum;

        avg = sumOf / total;


        return avg;
    }

    public String toString(int[] array)
    {
        String result = "";

        for (int i = 0; i < array.length; i++)


        result = result + array[i];

        return result;
    }
}

这里是驱动程序(调用后我也不知道怎么做平均显示):

import java.util.*;

public class RandomArrayDriver {

    public static void main(String[] args)
    {
        int value;
        RandomArray one = new RandomArray();

        one.getAvg();
        one.getMax();
        one.getMin();

        System.out.print("The contents are: " + one.toString());
    }
}

【问题讨论】:

  • take the tour 了解该网站的运作方式以及此处的主题有哪些问题,并edit 相应地提出您的问题。另见:How to Debug Small Programs
  • 在您的代码中,我没有看到您使用 Scanner 类的公共函数中的书面值
  • 我建议包括抛出的异常的输出和堆栈跟踪。这将帮助人们更快地确定问题的根源。

标签: java arrays throw


【解决方案1】:

根据您发布的代码,它不应该在这种状态下运行。当我运行它时,我得到了与您报告的不同的异常,但是,这里有一些提示可以让它运行:

  • RandomArray 的构造函数将 array 初始化为局部变量,一旦完成,该引用就会丢失。您最可能想要的是将 array 改为实例变量。然后,您的其他类方法可以在进行计算时访问该数组。

  • 在您的RandomArrayDriver 中,您在不传递参数的情况下调用one 实例上的类方法,但您在RandomArray 中对这些方法的定义指定了一个int[] 参数。如果你根据上面的观点重构你的代码,你应该能够删除这些并且你的驱动程序将正常运行。

希望这足以让您入门。这些更改至少应该让程序运行,之后的其他修复应该是输出的明显格式(提示:toString 在当前状态下会输出一些奇怪的东西)。

【讨论】:

    【解决方案2】:

    您好,如果您的数组是原始数据类型,那么您不必编写自定义代码来查找可以使用 array.sort 函数对数组进行排序的最大值和最小值。排序后,您的第一个索引将是最小值,数组的最后一个索引将具有最大值。如下所示:

    int[] nums= {1, 4, 2, 5, 8};
    Arrays.sort(nums);
    System.out.println("Minimum = " + nums[0]);
    System.out.println("Maximum = " + nums[nums.length-1]);
    

    【讨论】:

      猜你喜欢
      • 2016-06-27
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-07
      • 1970-01-01
      • 1970-01-01
      • 2021-11-02
      相关资源
      最近更新 更多