这段代码抛出错误“线程“main”中的异常 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 错误。
3 回答
米脂
TA贡献1836条经验 获得超3个赞
问题是您声明字符数组的方式。
char[] chr1 = {};
你这样做的方式是用 0 的大小定义数组。
在 Java 中,您需要像这样指定数组的大小:
char[] chr1 = new char[3];
它的作用是声明一个预定义大小为 3 的 char 数组。
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
如果你正在尝试为回文写代码,它在很多方面都是错误的,但对于错误,你正在初始化一个 0 大小的空数组,使用这个
char[] chr1 = new char[3];
鸿蒙传说
TA贡献1865条经验 获得超7个赞
您还应该首先检查长度以确保它们相同。否则,您可能会得到另一个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("");
添加回答
举报
0/150
提交
取消