关于#java#的问题,如何解决?

出错了,显示: java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
目的:创建一个含有6个元素的int类型数组,从键盘输入值初始化该数组(数字代表三角形的边长) ,返回由其中三个长度(每个值只能选一次)组成的、面积不为零的三角形的最大周长 。如果不能形成任何面积不为零的三角形,返回0。


import java.util.*;
public class T3_1 {
    public static void main(String[] args) {
        int[] t= new int[5];
        Scanner sc=new Scanner(System.in );
        for(int i=0;i<=t.length;i++) {
            t[i]=sc.nextInt();
        }
        for(int a=0;a<=t.length;a++) {
            for(int b=0;b<=t.length;b++) {
                for(int c=0;c<=t.length;c++) {
                    if(a!=b&&a!=c&&b!=c) {
                        if(t[a]+t[b]>t[c]||t[a]+t[c]>t[b]||t[b]+t[c]>t[a])
                            System.out.println(t[a]+t[b]+t[c]);
                        else
                            System.out.println(0);
                    }
                }
            }
            
        }

    }
}

定义 6个元素,那你倒是定义 数组长度为 6 呀,你定义成 5, 下面又是 = 数组长度的 索引访问,自然数组越界访问了

public class Test  {

    public static void main(String[] args) {
        int[] t= new int[6];
        Scanner sc=new Scanner(System.in );
        for(int i=0;i<t.length;i++) {
            t[i]=sc.nextInt();
        }
        int maxLen = 0;
        for(int a=0;a<t.length-2;a++) {
            for(int b=a+1;b<t.length-1;b++) {
                for(int c=b+1;c<t.length;c++) {
                    if(t[a]+t[b]>t[c] && t[a]+t[c]>t[b] && t[b]+t[c]>t[a])
                        maxLen = Math.max(maxLen, t[a]+t[b]+t[c]);
                }
            }
        }
        if (maxLen == 0) {
            System.out.println("不能构成任何面积不为零的三角形!");
        } else {
            System.out.println("最大周长为:" + maxLen);
        }
    }

}

import java.util.*;

public class T3_1 {
    public static void main(String[] args) {
        int[] t = new int[6];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < t.length; i++) {
            t[i] = sc.nextInt();
        }
        int maxPerimeter = 0;
        boolean hasTriangle = false;
        for (int a = 0; a < t.length; a++) {
            for (int b = 0; b < t.length; b++) {
                for (int c = 0; c < t.length; c++) {
                    if (a != b && a != c && b != c) {
                        if (t[a] + t[b] > t[c] && t[a] + t[c] > t[b] && t[b] + t[c] > t[a]) {
                            int perimeter = t[a] + t[b] + t[c];
                            if (perimeter > maxPerimeter) {
                                maxPerimeter = perimeter;
                                hasTriangle = true;
                            }
                        }
                    }
                }
            }
        }
        if (hasTriangle) {
            System.out.println(maxPerimeter);
        } else {
            System.out.println(0);
        }
    }
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^