2016-04-09 63 views
0

在嘗試使用printf打印數組時遇到了一些問題,我通過OOP來完成它。林傳球隨機工資10名銷售代表。在數組中使用java中的printf

這裏是我這麼遠......

public void printArray() 
{ 
    for(int salesRep = 0; salesRep < salary.length; salesRep++) 
    { 
     System.out.printf("Sales Rep %d%n", "%4d Current Salary: %2.f", (salesRep + 1), salary[salesRep]); 
    } 
} 

這是我得到的輸出...

enter image description here

但是我試圖讓它顯示這樣... enter image description here

任何幫助,將不勝感激。

+0

我從來沒有編碼的Java一行在我的生活,但是在我看來,你有3個(也許是4個)格式說明符(%d%n%4d%2.f),只有2個數據((salesRep + 1)和薪水[sal esRep])。 – jbm

+0

&d&n是一個十進制整數和新行(我計算爲1說明符)%4d是選項卡跨和%2.f我認爲是有2個小數位? – Konahrik16

+1

printf()的簽名是'printf(String format,Object ... args)'。但是你有兩個格式字符串,然後是2個參數,而不是1個格式字符串和3個參數。 –

回答

3

我認爲它需要是這樣的:

System.out.printf("Sales Rep %d Current Salary: %.2f %n", (salesRep + 1), salary[salesRep]); 

每個將要打印的行是雙引號內。下面的值分別代替引號內的%d和%f(可以選擇您自己的寬度/間距)。引號內的%n將創建一個換行符。

+0

我將%2.f%n更改爲%.2f%n,它工作正常! – Konahrik16

1

您需要將您的格式字符串合併爲一個字符串作爲第一個參數。你也有一個太多的說明符,所以刪除%4d。並將最後一個說明符更改爲%.1f - 期間(.)必須位於數字(1)之前。如何在Java中使用printf

更多信息:https://www.cs.colostate.edu/~cs160/.Spring16/resources/Java_printf_method_quick_reference.pdf

例子:

public class Test { 
    public static void main(String []args) { 
    printArray(); 
    } 

    public static void printArray() { 
    double salary[] = {35000.0, 45000.0, 2000.0, 110000.0, 5000.0 
         35001.0, 18999.0, 95000.0, 9999.0, 65000.0}; 
    for(int salesRep = 0; salesRep < salary.length; salesRep++) { 
     System.out.printf("Sales Rep %d\tCurrent Salary: %.1f\n", 
         (salesRep + 1), salary[salesRep]); 
    } 
    } 
} 

輸出:

Example output