如何在JOptionPane中打印一组for循环数组?

时间:2013-04-09 23:17:18

标签: java swing joptionpane

这是我打印输出到该程序中的信息的原始代码,它的目的是创建一个漂亮的小桌子,在左边显示教师姓名,右边是薪水,底部是所有人的总薪水:

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 个答案:

答案 0 :(得分:2)

您需要将呼叫转移到JOptionPane.showMessageDialog循环之外的for

结帐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());

答案 1 :(得分:1)

问题是因为你在循环中调用JOptionPane.showMessageDialog,它将执行3次。您应该做的是将要打印的字符串连接成一个字符串对象,如下所示:

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

JOptionPane.showMessageDialog(null, toBeDisplayed);

请注意,使用+ =共同使用字符串不是最有效的方法 - 考虑使用StringBuilder / StringBuffer