if (arr>arr[max]){
max=i;
你上面的代码其实并不是把max当做数组的最大值,而是把max当成了数组最大值的角标,所以他返回的是数组最大值的角标元素,即是4。
作者: 李贺晓 时间: 2012-11-22 11:35
你返回的是数组中的角标,你的getMax方法中,最后返回的值是max,此处你的max是用作角标的,把你的输出结果换一下就OK了
public class Zuizhi {
public static void main(String[] args) {
int []arr ={2,6,8,3,9,1}; //初始化一个数组
int max=getMax(arr); //调用方法获取最大值角标
System.out.println(arr[max]);//此时输出的是最大值
}
public static int getMax(int []arr){
int max=0;
for (int i=1;i<arr.length;i++){
if (arr[i]>arr[max]){
max=i; //局部变量max记录最大值
}
}
return max; //返回最大值
}
} 作者: jerry2627 时间: 2012-11-22 11:35
只不过你返回的是角标,很正确的程序哦作者: 唐永康 时间: 2012-11-22 11:47
public class Zuizhi {
public static void main(String[] args) {
int []arr ={2,6,8,3,9,1}; //初始化一个数组
int max=getMax(arr); //调用方法获取最大值
System.out.println(max); //改变方式一
}
public static int getMax(int []arr){
int max=0;
for (int i=1;i<arr.length;i++){
if (arr>arr[max]){
max=i; //局部变量max记录最大值
}
}
return max; //返回最大值,改变方式二。
}
}
改正后的代码如下:
public class ZuiZhi {
public static void main(String[] args) {
int []arr ={2,6,8,3,9,1}; //初始化一个数组
int max=getMax(arr); //调用方法获取最大值
System.out.println(max);
}
public static int getMax(int []arr){
int max=0;
for (int i=1;i<arr.length;i++){
if (arr>arr[max]){
max=i; //局部变量max记录最大值
}
}
return arr[max]; //返回最大值
}
}
作者: 孙万利 时间: 2012-11-24 18:26
public class Zuizhi {
public static void main(String[] args) {
int []arr ={2,6,8,3,9,1}; //初始化一个数组
int max=getMax(arr); //调用方法获取最大值
System.out.println(max);
}
public static int getMax(int []arr){
int max=0;
for (int i=1;i<arr.length;i++){
if (arr>arr[max]){
max=i; //局部变量max记录最大值
}
}
return max; //返回最大值
}
}
我想获取最大值,输出结果应该是9才对,可是输出结果是4,这个4是从哪出来的?请各位高手指点指点
同学,你上面的代码没什么大问题,问题出在这里:
int max=0;
for (int i=1;i<arr.length;i++){
if (arr>arr[max]){
max=i; //局部变量max记录最大值
}
}
if语句应该是if(arr[i]>arr[max]){
max=i;
}