在我的代码中得到这个错误,并且不完全理解如何修复,试图解决我自己的编码问题。
线程“主”StringParenthesis.main(StringParenthesis.java:14)中的异常:索引6超出了长度6在java.lang.ArrayIndexOutOfBoundsException上的界限
public class StringParenthesis {
public static void main (String[]args){
String word = "recede";
String[] list,list2 = new String[word.length()];
list = word.toLowerCase().split("");
String result = "";
for(int i=1;i<list.length;i++) {
for(int j=1; j<list.length;i++) {
if(list[i].equalsIgnoreCase(list[j])){
list2[i] = ")";
list2[j] = ")";
}
}
}
for (int k=1; k<list2.length;k++) {
if(list2[k]!=")") {
list2[k]="(";
result +=list2[k];
}else
result +=list2[k];
}
System.out.println(result);
}
}发布于 2021-05-15 06:16:58
我不明白您的代码的目的是什么,现在它只在每个list2字符中填充")“,以一种昂贵的方式多次迭代以寻找乐趣,请分享您的目标,以帮助您修复您的方法。
如果您的代码被隐藏了,您的代码就无法工作,因为:
首先:变量"i“、"j”和"k“必须以"0”而不是"1“开头,这样才能迭代整个数组。现在你从“后退”,"e“的第二个字母开始,而不是"r”。
第二:在使用“j”的嵌套for循环中,必须增加"j",而不是"i“。这是的主要原因。
第三:这不会造成任何错误,但也是错误的。在这一行中没有初始化list2。
String[] list, list2 = new String[word.length()];你要在这个里面初始化它
list = word.toLowerCase().split("");如果我们不这样做,那么你就可以从第一份作业中删除。不管代码什么都不做,它也可以这样做:
public class StringParenthesis {
public static void main(String[] args) {
String word = "recede";
String[] list, list2 = new String[word.length()];
list = word.toLowerCase()
.split("");
StringBuilder result = new StringBuilder();
for (int i = 0; i < list.length; i++) {
for (int j = 0; j < list.length; j++) {
if (list[i].equalsIgnoreCase(list[j])) {
list2[i] = ")";
list2[j] = ")";
}
}
}
for (int k = 0; k < list2.length; k++) {
if (list2[k] != ")") {
list2[k] = "(";
result.append(list2[k]);
} else
result.append(list2[k]);
}
System.out.println(result.toString());
}
}发布于 2021-05-15 06:47:13
我不明白您的优点,但是java中的数组和集合的索引是从0开始的,但是数组和集合的大小不是从0开始的,例如,如果我在列表中添加了三个元素,列表的大小是3,但是它有0,1,2索引。
public class StringParenthesis {
public static void main (String[]args){
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
System.out.println(list.size()); // 3
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}https://stackoverflow.com/questions/67543148
复制相似问题