编写一个类ArrayCalc,它返回Java中的最大值、最小值和平均值
问题: 编写一个实现以下方法的类ArrayCalc String arrayCalc(int[]数组):返回以下格式的字符串:“高:,低:,平均:”。 假设包含任何元素的数组都没有空元素。通过返回空字符串来处理空数组 考虑以下代码块:编写一个类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 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