如何并排输出两个不同长度的数组列表

时间:2019-01-28 20:48:42

标签: java arrays arraylist

我删除了我以前的帖子。.这是我的问题以及如何重现该问题的信息

  

因为用户输入了 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));
    }
}

}

2 个答案:

答案 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错误,打印出的元素将仅忽略较长数组/列表的其余部分。