作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题:编写一个实现以下方法的 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/
我是一名优秀的程序员,十分优秀!