gpt4 book ai didi

java - 用Java编写一个ArrayCalc类,返回最大值、最小值和平均值

转载 作者:行者123 更新时间:2023-11-30 03:15:38 24 4
gpt4 key购买 nike

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

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

考虑以下代码块:

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));
}
}

打印出来的内容:

Exception in thread "main" java.lang.NullPointerException

at ArrayCalc.arrayCalc(ArrayCalc.java:13)
at ArrayCalc.main(ArrayCalc.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

Process finished with exit code 1

最佳答案

我会使用String.format(String, Object...) , Math.max(int, int)Math.min(int, int) 。我还想要 for-each loop迭代数组中的值。类似的东西

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);
}

我用你的main方法运行了它。我得到了(所要求的)

high: 3, low: 1, average: 2
high: 0, low: 0, average: 0

关于java - 用Java编写一个ArrayCalc类,返回最大值、最小值和平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32708694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com