2015-06-20 72 views
-1
“\ t”的为表对准

我的代码使用一个for循环,像这样:在Java中使用

for(int i=0; i<100; i++) 
{ 
    System.out.print(number + "\t"); 
} 

当然我的for循环比这要复杂得多,但我只是输入,在用于演示目的。我在表格中使用“\ t”进行对齐,但这会使列打印太远。我目前的输出是:

1  2  3  4 
-- -- -- --   
1  1  1  4       
0  2  2  2     
0  0  3  3 

我该如何减少标签“\ t”制造的空间? 我的另一个问题是我如何分割80个字符的行,以便我的输出不超过页面宽度?

+4

有在Java中可用的格式打印机API自1.5使用某些 “标准的” 序列来格式化输出。查看http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html –

+3

请注意,制表符所代表的空间数量完全是您的控制台窗口或文件编辑器的功能。不是真正的Java问题... – dhke

回答

0

更好的办法是使用System.out.format(使用适当的格式)比System.out.println。看到Javadoc和这个不错的cheatsheet

public class Misc { 
    public static void main(String args[]){ 
     String format = "|%1$-10s|%2$-10s|%3$-20s|\n"; 
     System.out.format(format, "FirstName", "Init.", "LastName"); 
     System.out.format(format, "Dick", "", "Smith"); 
     System.out.format(format, "John", "D", "Doe"); 

     String ex[] = { "John", "F.", "Kennedy" }; 

     System.out.format(String.format(format, (Object[])ex)); 
    } 
} 

输出:

|FirstName |Init.  |LastName   | 
|Dick  |   |Smith    | 
|John  |D   |Doe     | 
|John  |F.  |Kennedy    | 
+0

你能解释一下%1 $ -10s中的数字代表什么?这是否允许我将该行分成80个字符? – Chalupa

+0

如何在我有大量字符串时使用此功能?像100.我不能单独键入每个人 – Chalupa

+0

@Chalupa%1 $是匹配第一个参数作为字符串的地方,-10s将字符串格式化为左对齐,宽度为10个空格。阅读2个给定的链接,了解它是如何工作的!至于第二个问题,那么......你可以有一个数组或文件与你的数据,并通过他们的元素循环逐行打印。 – RealHowTo