黑马程序员技术交流社区
标题:
关于数组的一个简单问题(已解决)
[打印本页]
作者:
韩新凯
时间:
2012-4-15 20:46
标题:
关于数组的一个简单问题(已解决)
本帖最后由 韩新凯 于 2012-4-18 15:18 编辑
给定数组获取数组最大值,public class ArrayTest {
public static void main(String[] args) {
ArrayTest at = new ArrayTest();
int[] arr = {1,2,4,6,3,2};
int max = at.getMaxValue(arr);
System.out.println("max = "+max);
}
public static int getMaxValue(int[] arr){
int maxValue = arr[0];
for(int i=0;i<arr.length;i++){
if(maxValue < arr
){
maxValue = arr
;
}
}
return maxValue;
}
}
如果给定的数组int[] arr = {};会出错,为什么?
作者:
张卯
时间:
2012-4-15 20:53
本帖最后由 张卯 于 2012-4-15 20:57 编辑
...数组为空,当然出错了,你让虚拟机干什么?
arr只是一个引用,你没有new出对象,就没有内存空间,就不可能赋值,这样能明白吗?
作者:
高铭
时间:
2012-4-15 20:56
空的数组....怎么运行啊
作者:
chenwei
时间:
2012-4-15 20:58
数组为空,就没有索引
int maxValue = arr[0];就会数组索引越界异常
作者:
曾虓
时间:
2012-4-15 21:15
代码分析:
如果改成int[] arr = {};话,意味着声明了一个空的数组。
int maxValue = arr[0];就会报数组索引越界(Attempt to access illegal array index: 0)
所以一般获取数组单一数据的时候,最好做一个判断:
if (arr.length>0) {
}
对于你的代码还有几点修改的问题:
第一getMaxValue这个方法是ArrayTest类内部的静态方法,所以完全没有必要再实例化一次ArrayTest
直接用getMaxValue即可。
第二由于是内部的私有静态方法,所以请把getMaxValue设为private
修改后代码如下:
public class ArrayTest {
public static void main(String[] args) {
int[] arr = {};
int max = getMaxValue(arr);
System.out.println("max = " + max);
}
private static int getMaxValue(int[] arr) {
int maxValue = 0;
if (arr.length > 0) {
maxValue = arr[0];
for (int i = 0; i < arr.length; i++) {
if (maxValue < arr
) {
maxValue = arr
;
}
}
}
return maxValue;
}
}
希望对你有所帮助。{:soso_e113:}
作者:
张小庆
时间:
2012-4-15 21:50
数组里边都没有值,怎么比较输出最大值啊
作者:
韩新凯
时间:
2012-4-15 23:15
懂了,谢谢。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2