[問題] 印出整齊格式

作者: dharma (達)   2015-05-27 02:26:34
像下面程式碼列印出來的樣子
0和9沒有真的對齊
(PTT上看起來有對齊,但Eclipse上沒有)
-9 -9 0 0
0 0 0 -9
0 -9 0 -9
-9 -9 0 0
printf要怎麼改才能漂亮對齊
就彷彿0的前面有看不見的加號那樣
thank
程式碼:
class Data {
public void wall() {
int[][] grid = new int[][] {
{ -9, 0, 0, -9 },
{ -9, 0, -9, -9 },
{ 0, 0, 0, 0 }, { 0, -9, -9, 0 },
{ -9, 0, -9, 0 },
{ -9, 0, 0, 0 }, { 0, 0, -9, 0 } };
for (int j = 0; j < 4; j++) {
for (int i = 0; i < 4; i++) {
System.out.printf("%2d" + " ",
grid[i][j]);
}
System.out.print("\n");
}
}
}
public class Wall {
public static void main(String[] args) {
// TODO Auto-generated method stub
Data data = new Data();
data.wall();
}
}
作者: alchin7748 (R.Chin)   2015-05-27 02:40:00
%2d改成 %3d or %4d試試看 後面的空白字串可以刪除
作者: pttworld (批踢踢世界)   2015-05-27 02:46:00
原po測試成功後會回來版上說明樓上方法正確嗎?
作者: alchin7748 (R.Chin)   2015-05-27 03:15:00
欸? 其實你的程式碼沒什麼問題 貼一下截圖上來看看??http://i.imgur.com/u9B5FeE.jpg
作者: pttworld (批踢踢世界)   2015-05-27 03:17:00
所以這是原po的作業嗎?順便請問alchin7748對於%2d之中的2要改3的原因是?
作者: Killercat (殺人貓™)   2015-05-27 03:21:00
我這邊看也是沒問題 是不是因為你終端機字型的關係?要選等寬字型才會對齊,看看你預設的字型是不是
作者: pttworld (批踢踢世界)   2015-05-27 03:26:00
原po知道從Eclipse的console複製未對齊結果貼上來文章?
作者: alchin7748 (R.Chin)   2015-05-27 03:32:00
自己習慣這樣的輸出寫法是不加空白字串的 如果寫%2d的話負數會跟前面整數黏在一起 %3d對於此題剛好會多空一格 若矩陣內有二位數 我就會寫成%4d了 不吝指教
作者: pttworld (批踢踢世界)   2015-05-27 03:34:00
無聊的,同一字型,如0前面有+號,對不齊的可能?我應該是不問為什麼是+不是*這樣的定義問題。寧願相信 + 對 -,0 對 9,同一字型很難對不齊。一般要詭辯要凹的話,技術上就會說+是仿佛看見的。@alchin7748,所以改數字是你的習慣。數字代表寬度。
作者: ctrlbreak   2015-05-27 08:17:00
作法應該是先找出最大的數值所佔的空間(長度)後,再依每個數值長短分別補上該有的空間.想要漂亮不是一個printf可以辦到的
作者: pttworld (批踢踢世界)   2015-05-27 09:21:00
就文章內容我相信原po是新手
作者: swpoker (swpoker)   2015-05-27 09:48:00
沒有"看起來"對齊這回事,常常都要回答user眼見不為憑
作者: Kenqr (function(){})()   2015-05-27 11:55:00
要用等寬字型才會對齊
作者: pttworld (批踢踢世界)   2015-05-27 14:19:00
如原po真為新手懂得調字型卻不知可能是調了字型產生問題來這問,我只好認為是有另一老手幫他調的,但就不再繼續幫這新手的這問題
作者: dreamnook (亞龍)   2015-05-27 23:47:00
你這應該不是等寬字型 而比較像新細明體XD把字體切換成"細明體"試試看
作者: andyluong200 (尼亞)   2015-05-31 23:22:00
全形半形?

Links booklink

Contact Us: admin [ a t ] ucptt.com