2015-02-05 31 views
1

所以我在想,如果有人可以幫助我這個格式...格式化Java中的字符串匹配完美

下面是它目前的樣子: image 1

這正是我需要的它看起來像(不...): image 2

這裏是我的代碼爲它目前:

System.out.format("%n$------------------------------------$"); 
    System.out.format("%nWITHHOLDING FOR EACH EMPLOYEE%n%n"); 
    System.out.format("First Name  Last Name  Hourly Rate  Weekly Pay  Withholding Amount%n%n"); 
    for(int i = 0; i < employeeNum; i++) { 
     System.out.format("%-10s %-10s %-10.3f %-10.3f %-10.3f%n", employeeFirstName[i], employeeLastName[i], 
       employeeHourlyPay[i], weeklyPay[i], withholdingAmt[i]); 
    } 
    System.out.format("%nEND OF REPORT%n"); 
    System.out.format("$------------------------------------$"); 

感謝您的幫助!

+0

你爲什麼不增加「10」,在「% -10「,直到它符合? .3你不需要小數點的地方省略.3。 – laune

+0

你應該看看可以爲你做這個的庫。其中一個是這樣的:https://code.google.com/p/data-exporter/ – Nishan

+0

是的,我猜這沒有什麼修復,因爲字符串可以是不同的大小。我限制了名字和姓氏的大小,但它仍然可能不起作用。感謝您與我確認! – Dom

回答

0

使用此截斷長字符串:

static String truncto(String s, int max){ 
    return s.length() > max ? s.substring(0,max) : s; 
} 

你可以用它來獲取對準的輸出

System.out.format("First Name  Last Name  Hourly Rate  Weekly Pay  Withholding Amount%n%n"); 
System.out.format("%-17s %-16s %-18.3f %-17.0f %-17.0f%n", 
      truncto("John-Bulwer-Lytton",17), 
      truncto("Smith",16), 
      123.45, 200.0, 100.0); 

用你的數組元素的地方,我用於測試的文字的。

您肯定可以打印兩行標題。

1

在這裏,我都做到了,也只是用對準在標題:

System.out.print("%n$------------------------------------$"); 
System.out.printf("%nWITHHOLDING FOR EACH EMPLOYEE%n%n"); 
System.out.printf("%-12s %-12s %-12s %-12s %-12s \n\n", "First Name", "Last Name", "Hourly Rate", "Weekly Pay", "Withholding Amount"); 

for(int i = 0; i < employeeNum; i++) { 
    System.out.printf("%-12s %-12s %-12.3f %-12.3f %-12.3f \n", employeeFirstName[i], employeeLastName[i], 
      employeeHourlyPay[i], weeklyPay[i], withholdingAmt[i]); 
} 
System.out.printf("%nEND OF REPORT%n"); 
System.out.print("$------------------------------------$"); 

這裏是輸出:

... 
First Name Last Name  Hourly Rate Weekly Pay Withholding Amount 

Brett   Lawless  25.500  1020.000  204.000  
....