0

这是我打印输入程序信息的原始代码,它旨在创建一个漂亮的小表格,左侧显示导师姓名,右侧显示他们的工资,底部显示所有人的总工资:

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);
}
4

2 回答 2

2

您需要将调用移到-loopJOptionPane.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());
于 2013-04-09T23:24:30.553 回答
1

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

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

JOptionPane.showMessageDialog(null, toBeDisplayed);

请注意,使用 += 连接字符串并不是最有效的做法——考虑使用 StringBuilder / StringBuffer

于 2013-04-09T23:42:18.600 回答