代码之家  ›  专栏  ›  技术社区  ›  Brent Jones

随机数组:获取最小值、最大值和平均值

  •  -3
  • Brent Jones  · 技术社区  · 7 年前

    我正在编写一个类,它应该用随机整数填充数组。数组的大小是通过用户通过scanner类输入的。然后应该包括用于获取平均值、最小值和最大值的方法,以及用于显示随机整数的toString方法。我已经写出了这个类,但无法在驱动程序中使用这些方法。我使用数组。getMax()并返回一个不能应用于给定类型的throw。我的字符串只返回数组地址。有人能告诉我哪里出了问题吗?

    类别:

    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());
        }
    }
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   kunruh    7 年前

    根据您发布的代码,它不应在此状态下运行。当我运行它时,我得到了与您报告的不同的异常,但尽管如此,这里有一些让它运行的指针:

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

    • 在您的 RandomArrayDriver ,您正在调用 one 实例,但这些方法的定义 随机数组 指定一个 int[] 论点如果您基于上述要点重构代码,您应该能够删除这些代码,并且您的驱动程序将正常运行。

    希望这足以让你开始。这些更改应至少使程序运行,之后的其他修复应是输出的明显格式(提示: toString 将在当前状态下输出有点奇怪的内容)。

        2
  •  0
  •   Maddy    7 年前

    您好,如果您的数组是基元数据类型,那么您不必编写自定义代码来查找可以使用数组的最大值和最小值。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]);