这是我打印输出到该程序中的信息的原始代码,它的目的是创建一个漂亮的小桌子,在左边显示教师姓名,右边是薪水,底部是所有人的总薪水:
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);
}
答案 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