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

Java 数组列表中的元素将显示在新行上,java,string,user-interface,arraylist,joptionpane,Java,String,User Interface,Arraylist,Joptionpane,我的ArrayList每次循环时都会添加一个字符串,但是它会显示在一个大的行上。如何使每个字符串在循环时显示在JOptionPane中的新行上 以下是我的报告方法: public String report() { return(name + "\t" + height + " inches\t" + weight + " pounds\tBMI: " + df.format(bmiValue()) + "\t" + bmiStatus()

我的ArrayList每次循环时都会添加一个
字符串
,但是它会显示在一个大的行上。如何使每个
字符串在循环时显示在JOptionPane中的新行上

以下是我的报告方法:

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);
ArrayList a=新的ArrayList();
if(JFileChooser.APPROVE\u选项)
{
文件f=choose.getSelectedFile();
扫描器s=新扫描器(新文件输入流(f));
int l=scanner.nextInt();
对于(int i=0;i
您的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 a=new ArrayList();
使用ArrayList的String参数可确保类型安全,因为ArrayList只能保存字符串对象,而ArrayList是可以保存任何对象的原始类型,并且不是类型安全的