出错了,显示: 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);
}
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话:下面异常报错,就是因为我的数组arr只能有arr[0],arr[1]两个元素,而我的循环中多插入了,所以出现了下标越界,而这是运行时异常,需要用户自己解决,所以我们有两种处理方法:
两种解决方式就可以消除异常