此代码引发
错误“线程“主”中的异常” java.lang.ArrayIndexOutOfBoundsException:0
在basic2.compareStrPractice.main(compareStrPractice.java:15)“
int i;
char[] chr1 = {};
char[] chr2 = {};
String s1 = "man";
String s2 = "nam";
for ( i= 0; i<s1.length(); i++){
chr1[i] = (char)s1.charAt(i);
chr2[i] = (char)s2.charAt(i);
}
if ((chr1[0] == chr2[2]) && (chr1[1] == chr2[1]) && (chr1[2] == chr2[0])){
System.out.println("They are Palindrom!");
}
}
我要打印对帐单。但是会引发ArrayOutOfBoundary错误。
答案 0 :(得分:2)
问题在于您声明字符数组的方式。
char[] chr1 = {};
定义数组大小的方式为0。
在Java中,您需要像这样指定数组的大小:
char[] chr1 = new char[3];
它的作用是声明一个预定义大小为3的char数组。
答案 1 :(得分:1)
如果您试图为回文式编写代码,这在许多方面都是错误的,但是对于错误,您正在初始化一个大小为0的char的空数组,请使用此
char[] chr1 = new char[3];
答案 2 :(得分:0)
您还应该首先检查长度以确保长度相同。否则,您可能会得到另一个ArrayIndexOutOfBoundsException
。当您使用较长的字符串长度来索引较短的字符数组时,就会发生这种情况。
由于对于较长的字符串,您不想在单个if
语句中进行多次比较,因此应使用循环并从一个数组的开头和另一个数组的结尾进行比较。因此,如果长度为5,则可以比较0和4,然后分别是1和3,然后2和2,然后3和1等等的字符。
以下是一些其他有用的技巧。您无需创建空数组并填充它们。字符串提供了该功能。
char[] chr1 = s1.toCharArray();
实际上,您不需要分配给String变量。
char[] chr1 = "man".toCharArray();
以防万一您想分配给String而不是char数组,您可以这样做以保存单个字符串数组。
String[] str1 = "abcdefghijklmnopqrstuvwxyz".split("");