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 つのチューターを表示する必要があるとしましょうJOptionPane。3 つのチューターを 1 つのダイアログ ボックスに印刷する代わりに、3 つのダイアログ ボックスが表示されます。

問題はすべての情報が for ループ内にあるためだと思いますが、この問題を解決して、指定された数のチューターを表示し、System.out.println解決策のように 1 つのダイアログ ボックスで支払うことができるようにするにはどうすればよいですか?

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

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());
于 2013-04-09T23:24:30.553 に答える
1

問題はJOptionPane.showMessageDialog、ループ内で呼び出しているため、3 回実行されることです。代わりにすべきことは、次のように、出力したい文字列を 1 つの文字列オブジェクトに連結することです。

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 に答える