使用迭代器格式化ArrayList的输出

时间:2015-09-08 03:00:50

标签: java arraylist iterator formatting

我在使用外部文件格式化我的Java程序输出时遇到问题,使用外部文件输入ArrayList,然后使用Iterator生成输出。我用以下数据创建了一个逗号分隔文本。

两栖动物,青蛙,绿色,游泳 哺乳动物,狗,棕色,运行 鸟,隼,棕,苍蝇 鱼,鲑鱼,银,游

它被加载到程序中然后需要使用迭代器来打印输出。我遇到的问题是尝试将数组中的每个元素打印到列中。输出目前如下所示。任何有关如何格式化的帮助都非常感谢。

类型名称颜色操作

两栖动物,青蛙,绿色,游
哺乳动物,狗,棕色,运行
鸟,隼,棕,苍蝇 鱼,鲑鱼,银,游

public class AnimalIO {

public static void main(String[] args) {

    File file = new File("animals.txt");

    ArrayList<String> animals = new ArrayList<>();

    String animal;

    // Structure used to read external data into internal ArrayList
    try {
        Scanner input = new Scanner(file);
        while(input.hasNextLine())
        {
            animal = input.nextLine();
            animals.add(animal);
        }
    }
    catch(Exception e){
        System.out.println("The input file \"animals.txt\" was not found.");
        System.out.println(e.toString());
    }

    System.out.print("Type\t\tName\t\tColor\t\tAction\n");
    System.out.print("---------------------------------------------------"
                     + "----\n");

    // Iterator structure used to print file
    Iterator aio = animals.iterator();
    while (aio.hasNext()){
        Object element = aio.next();
        System.out.print(element + "\t\n");
    }
}

}

2 个答案:

答案 0 :(得分:0)

您可以尝试使用System.out.printfSystem.out.print。您可以查看this以查看相同的示例。您可以将所有列的特定宽度设置为大于该列中的最大大小数据。

答案 1 :(得分:0)

使用带逗号分隔符的拆分操作将进一步拆分行数组元素。

Iterator aio = animals.iterator();
while (aio.hasNext()){
    String rowElement = (String) aio.next();
    String[] atomicElement = rowElement.split(",");
    // do something
}