2013-04-09 118 views
0

这是我的原始代码,用于打印输入到程序中的信息,它被设计用来创建一个可以在左边显示导师名字的好小桌子,右边是他们的薪水,底部的所有薪水总额为:如何在JOptionPane中打印一组for循环数组?

System.out.println("Tutor Stipend Report"); 
System.out.println("Tutors\t\tPay"); 
System.out.println("------\t\t---"); 
for(int out=0;out<numOfTutors;out++) { 
    System.out.println(names[out]+"\t\t"+stipend[out]); 
} 
System.out.println("--------"); 
System.out.println("Total: " +sum); 

现在我需要把这个代码显示在JOptionPane这里是我卡住的地方。我想保持与之前相同的表格设置,但每次我要显示信息时,可以说我需要显示3位导师,它只会提供3 JOptionPane对话框,而不是在一个对话框中打印3位导师。

我意识到这个问题是因为所有的信息都在for循环中,但是我该如何解决这个问题,这样我才能显示指定数量的导师并在一个对话框上付费,就像我在System.out.println解决方案中一样?

for (int out=0;out<numOfTutors;out++) { 
    JOptionPane.showMessageDialog(null, 
           "Tutor Stipend Report" + 
           "\nTutors  Pay" + 
           "\n---------   -----" + 
           "\n"+names[out]+"    "+stipend[out] + 
           "\n--------" + 
           "\nTotal: " +sum); 
} 

回答

2

您需要将呼叫转移到JOptionPane.showMessageDialogfor -loop的。

结账StringBuilder。它是这样的事情有所帮助:

StringBuilder sb = new StringBuilder(); 
sb.append("There are ").append(count).append(" people in the following list:\n"); 
for (int i = 0; i < count; i++) { 
    sb.append("Person #").append(count).append('\n'); 
} 
JOptionPane.showMessageDialog(null, sb.toString()); 
+2

+1解决方案很好,就像旁注一样,您还可以将文本包装在''标签中,并使用HTML格式(例如'

')生成更好的格式化结果 - JFYI – MadProgrammer2013-04-09 23:45:27

+0

此解决方案非常完美,谢谢你这么多,我从来没有听说过StringBuilder,但它是一个很好的解决方案。 – 2013-04-09 23:48:18

1

的问题是,因为你调用JOptionPane.showMessageDialog内循环,将执行3次。你应该做的,而不是为串联要打印成一个字符串对象像这样的字符串:

String toBeDisplayed = ""; 
for(int out=0;out<numOfTutors;out++) { 
    toBeDisplayed += /*.. add your string here.. */; 
} 

JOptionPane.showMessageDialog(null, toBeDisplayed); 

注意,使用cocatenating字符串+ =不是做最有效的事情 - 考虑使用StringBuilder的/ StringBuffer的

+0

感谢您的回复,我最终用StringBuilder从前一位用户告诉我的内容开始,再次感谢您。 – 2013-04-09 23:49:28