日期:2014-05-20  浏览次数:20671 次

这个程序是简单,但是没有我想要的数组最大值 这个结果,求高手帮忙改正,指点一下

import java.util.*;
public class Daxiao {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
double a[]=new double[10];
double max;
  System.out.println("从键盘上输入十个数:");
  Scanner scan=new Scanner(System.in);
  for(int i=0;i<=10;i++){
  a[i]=scan.nextDouble(); 
  System.out.println("a["+i+"]"+a[i]);
  }
  max=a[0];
  for(int j=0;j<=10;j++){
  if(a[j]>max){
  max=a[j];
   
  } 
  }
  System.out.println("数组中最大数是:"+max);
}

}


------解决方案--------------------
还是细节问题:for(int i=0;i<=10;i++)数组长度是10.下标是从0开始算的,长度是从1开始算的,i是下标,最大值只能为9不能等于10,以后注意一下了。^_^

int a[] = new int[10];
int max;
System.out.println("从键盘上输入十个数:");
Scanner scan = new Scanner(System.in);
for (int i =0; i <10; i++) {
a[i]= scan.nextInt();

}

max = a[0];
for (int i = 0; i <a.length; i++) {
if (a[i] > max) {
max = a[i];


}
}
System.out.println("数组中最大数是:" + max);
------解决方案--------------------
i < 10
------解决方案--------------------
Java code

public class Test {
    public static void main(String[] args) {
        double a[] = new double[10];
        double max;
        System.out.println("从键盘上输入十个数:");
        Scanner scan = new Scanner(System.in);
        for (int i = 0; i < 10; i++) {
            a[i] = scan.nextDouble();
            System.out.println("a[" + i + "]" + a[i]);
        }
        max = a[0];
        for (int j = 0; j < 10; j++) {
            if (a[j] > max) {
                max = a[j];

            }
            System.out.println("数组中最大数是:" + max);
        }
    }
}

------解决方案--------------------
把for循环中的=号去掉,[0-10]共计11个数了,数组会越界的。