我删除了我以前的帖子。.这是我的问题以及如何重现该问题的信息
因为用户输入了 right 个字符串, 匹配原始R6长度 一切都变得花花公子。但是当说用户输入的字符串比originalR6少时,因此originalR6是 大于userInputR6。编译后返回索引超出范围 要查看当前问题,请在userInput中注释掉nomad,maverick,lion 方法并取消对游牧民小牛的注释
public static void main(String[] args) {
TestMain main = new TestMain();
main.addAll();
//user input
main.userInput();
main.printAll();
}
ArrayList<String> originalR6 = new ArrayList<String>();
ArrayList<String> userInputR6 = new ArrayList<String>();
public void addAll() {
//Our set list of characters
Collections.addAll(originalR6,"nomad", "maverick", "lion");
}
public void userInput() {
userInputR6.add("nomad");
userInputR6.add("maverick");
userInputR6.add("lion");
//--------------
// userInputR6.add("lion");
// userInputR6.add("lion");
}
public void printAll() {
for (int i = 0; i <originalR6.size() ; i++) {
System.out.println((i+1) + ". " + originalR6.get(i) + "\t" + (i+1) + ". " + userInputR6.get(i));
}
}
}
答案 0 :(得分:1)
您应该打印直到较小的索引,然后^ rint 2的较大列表,我使用了printf
,因为它允许对齐:
public void printAll() {
int minSize = Math.min(originalR6.size(), userInputR6.size());
for (int i = 0; i < minSize; i++) {
System.out.printf("%d. %-10s %d. %-10s%n", (i + 1), originalR6.get(i), (i + 1), userInputR6.get(i));
}
if (originalR6.size() < userInputR6.size()) {
for (int i = minSize; i < userInputR6.size(); i++) {
System.out.printf("%d. %-10s %d. %-10s%n", (i + 1), "/", (i + 1), userInputR6.get(i));
}
} else if (originalR6.size() > userInputR6.size()) {
for (int i = minSize; i < originalR6.size(); i++) {
System.out.printf("%d. %-10s %d. %-10s%n", (i + 1), originalR6.get(i), (i + 1), "/");
}
}
}
获得
案例if
1. nomad 1. nomad
2. maverick 2. maverick
3. lion 3. /
案例else if
1. nomad 1. nomad
2. maverick 2. maverick
3. lion 3. lion
4. / 4. lion
5. / 5. lion
答案 1 :(得分:0)
在为两个“数组”数据建立索引时,如果尝试对数组/列表中的最后一个元素进行索引,则会得到index out of range
,因为在最后一个元素之后只有一个深渊。 >
for (int i = 0; i <originalR6.size() && i <userInputR6.size(); i++) {
System.out.println((i+1) + ". " + originalR6.get(i) + "\t" + (i+1) + ". " + userInputR6.get(i));
}
将i <userInputR6.size()
作为附加条件添加到for循环条件中将停止您的index out of range
错误,打印出的元素将仅忽略较长数组/列表的其余部分。