import java.io.*;
public class Mat
{
public static void main(String args[])
{
int a[]={2,4,6,8,10,12,14,16,18};
int k=0;
int i;
for(i=0;i<a.length;i++)
{
if(a[i]>a[i+1])
k=a[i];
else
k=a[i+1];
}
System.out.println("最大值为:"+k);
}
}运行时说if(a[i]>a[i+1])有问题 导致数组下标越界异常
大家看看该怎么该
谢谢帮助 滴水之恩 涌泉相报

解决方案 »

  1.   

    当i=a.length-1的时候,i+1=a.length 所以a[i+1]越界嘛
      

  2.   

    改后程序为:
    import java.io.*;
    public class Mat
    {
    public static void main(String args[])
    {
    int a[]={2,4,6,8,10,12,14,16,18};
    int k=0;
    int i;
    for(i=0;i<a.length-1;i++)
    {
    if(a[i]>a[i+1])
    k=a[i];
    else
    k=a[i+1];
    }
    System.out.println("最大值为:"+k);
    }
    }
      

  3.   

    这么晚了还在研究这个啊?
    if i is length-1, i+1 should be length, which is an invalid index.
      

  4.   

    for(i=0;i<=a.length-1;i++)
    循环该一下就行了
      

  5.   

    最后一次i=8时,a【i+1】即a【9】是不存在的
      

  6.   

    程序写得有点问题import java.io.*;
    public class Mat
    {
    public static void main(String args[])
    {
    int n=7;
    int[] a=new int[n];
    for(int i=0;i<n;i++)
    {
        a[i]=2*n;
    }int k=0;
    for(int i=0;i<a.length;i++)
    {
    if(a[i]>k)  //注意要跟k比,否则是比较相邻值,而不是max,你调换下数组中元素序看看
    k=a[i];System.out.println("最大值为:"+k);
    }
    }
      

  7.   

    呵呵i = (a.length - 1)的时候满足条件a[i+1] 不就越界了么
      

  8.   

    import java.io.*;
    public class Mat
    {
    public static void main(String args[])
    {
    int a[]={87,50,6,20,10,12,14,16,18};
    int k=0;
    int i;
    for(i=0;i<a.length;i++)
    {
    if(a[i]>k)
    k=a[i];
    }
    System.out.println("最大值为 "+k);
    }
    }