2013-04-09 122 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