数组列表中的元素显示在新行上

时间:2015-04-04 00:42:47

标签: java string user-interface arraylist joptionpane

我的ArrayList每次循环时都会添加String,但它会显示在一个大行上。如何在JOptionPane循环中的每一行String出现时将其显示在哪里?

这是我的报告方法:

public String report()
    {
        return(name + "\t" + height + " inches\t" + weight + " pounds\tBMI: "
                + df.format(bmiValue()) + "\t" + bmiStatus() );
    }

以下是ArrayList的代码:

ArrayList a = new ArrayList();

        if(JFileChooser.APPROVE_OPTION)
        {
            File f = choose.getSelectedFile();
            Scanner s = new Scanner(new FileInputStream(f));
            int l = scanner.nextInt();

            for(int i = 0; i < l; i++)
            {
               int height = s.nextInt();
               int weight = s.nextInt();
               String name = s.nextLine();

               BmiRecord r = new BmiRecord(name, height, weight);
               a.add(r.report());
            } 

            confirm = JOptionPane.showConfirmDialog(null, a, "BMI Calc", 
           JOptionPane.YES_NO_OPTION);

1 个答案:

答案 0 :(得分:1)

您的report()函数应为:

public String report()
{
    return(name + "\t" + height + " inches\t" + weight + " pounds\tBMI: "
            + df.format(bmiValue()) + "\t" + bmiStatus() + "\n");
}

注意我添加了\n,它在report()函数返回的字符串末尾添加了一个新行。

同样ArrayList a = new ArrayList();应更改为ArrayList<String> a = new ArrayList<String>();使用ArrayList的String参数可确保类型安全,因为ArrayList只能保存String对象,而ArrayList是一个可以保存任何对象的原始类型,是不安全的。