Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编写一个类ArrayCalc,它返回Java中的最大值、最小值和平均值_Java_Arrays - Fatal编程技术网

编写一个类ArrayCalc,它返回Java中的最大值、最小值和平均值

编写一个类ArrayCalc,它返回Java中的最大值、最小值和平均值,java,arrays,Java,Arrays,问题: 编写一个实现以下方法的类ArrayCalc String arrayCalc(int[]数组):返回以下格式的字符串:“高:,低:,平均:”。 假设包含任何元素的数组都没有空元素。通过返回空字符串来处理空数组 考虑以下代码块: ArrayCalc a = new ArrayCalc(); System.out.println(a.arrayCalc(new int[]{1, 2, 3})); //prints "high: 3, low: 1, average: 2" System.ou

问题: 编写一个实现以下方法的类ArrayCalc

String arrayCalc(int[]数组):返回以下格式的字符串:“高:,低:,平均:”。 假设包含任何元素的数组都没有空元素。通过返回空字符串来处理空数组

考虑以下代码块:

ArrayCalc a = new ArrayCalc();
System.out.println(a.arrayCalc(new int[]{1, 2, 3})); //prints "high: 3, low: 1, average: 2"
System.out.println(a.arrayCalc(new int[]{0})); //prints "high: 0, low: 0, average: 0"
System.out.println(a.arrayCalc(null)); //prints ""
我所拥有的:

public class ArrayCalc {
    String arrayCalc(int[] array) {
        int sum = 0;
        int average = 0;
        int i = 0;

        int min = Integer.MIN_VALUE;
        int max = Integer.MAX_VALUE;

        for (i = 0; i < array.length; i++) {
            sum += array[i];

            if (array[i] < min) {
                min = array[i];
            } else if (array[i] > max) {
                max = array[i];
            } else if (array == null) {
                return "";
            }
        }
        average = sum/array.length;

        return "";

    }
    public static void main(String[] args) {
        ArrayCalc a = new ArrayCalc();
        System.out.println(a.arrayCalc(new int[]{1, 2, 3}));
        System.out.println(a.arrayCalc(new int[]{0}));
        System.out.println(a.arrayCalc(null));
    }
}

不能检查NULL的长度

在您的代码中-->

您正在向数组传递null值。这导致for循环中出现异常 (正在检查的array.length只有NULL.length)

for(i=0;i
为验证零件添加一些边界条件。。rest代码看起来像我将使用的文件,并且。我还希望a迭代
数组中的值。差不多

String arrayCalc(int[] array) {
    if (array == null || array.length == 0) {
        return "";
    }
    int sum = 0;
    int high = Integer.MIN_VALUE; // <-- start low.
    int low = Integer.MAX_VALUE; // <-- start high.
    for (int v : array) {
        high = Math.max(v, high);
        low = Math.min(v, low);
        sum += v;
    }
    return String.format("high: %d, low: %d, average: %d", high, low,
            sum / array.length);
}

在对数组进行循环之前,请先执行null和empty检查,如果发现数组为null或empty,请打印消息。

在处理数组之前,应将null检查作为方法的第一项任务。此外,还应指定arrayCalc是
公共的
私有的
还是
受保护的
。我推荐
public
。在这种情况下,您不能使用
private
protected
。此外,还有两个错误:您应该将
min
max
的声明修复为:
int max=Integer.min\u VALUE
int min=Integer.max\u VALUE
。你能解释为什么吗?最后,只返回空字符串。所以您不能期望看到输出。而且,方法总是只返回一个值。因此,您应该在
arrayCalc()
本身中打印
max
min
average
。当您为方法变量
array
传递null时,
array.length
可能会导致
NullPointerException
System.out.println(a.arrayCalc(null));
for (i = 0; i < array.length; i++)
String arrayCalc(int[] array) {
    if (array == null || array.length == 0) {
        return "";
    }
    int sum = 0;
    int high = Integer.MIN_VALUE; // <-- start low.
    int low = Integer.MAX_VALUE; // <-- start high.
    for (int v : array) {
        high = Math.max(v, high);
        low = Math.min(v, low);
        sum += v;
    }
    return String.format("high: %d, low: %d, average: %d", high, low,
            sum / array.length);
}
high: 3, low: 1, average: 2
high: 0, low: 0, average: 0