2016-02-27 52 views
0

我的老師問我們創建了一個橫跨10列的表格,並顯示了從33到127的ASCII字符。我做錯了什麼,它都顯示在一行?

我得到的字符,但他們都在一行。

我在做什麼錯?

public class ASCIICharacters { 
    public static void main(String[]args) { 
     char a,b=0; 
     for (a=33;a<126+1;a++) { 
      if(b%10==0) { 
       System.out.print((Char)(a)); 
       System.out.print(" "); 
      } 
     } 
    } 
} 
+3

你從未打印新行... – Gaskoin

+0

不打印任何新行。 – khelwood

+0

使用'println'在每一行中打印結果。 –

回答

2

A newline從不打印。你可以做

for (char a = 33, b = 0; a < 127; a++, b++) { 
    System.out.print(a); 
    System.out.print("\t"); 

    if (b % 10 == 9) { 
     System.out.println(); 
    } 
} 
+0

也可以做'如果(b%10 == 9)' – Clashsoft

+0

是啊,這是有道理的:) – Reimeus

0

正如其他人所指出的那樣,你的代碼是用System.out.print()代替System.out.println()你不是遞增計數器變量b,這就是爲什麼該行分裂就不會工作,無論是。

下面是通過避免System.out.print/ln呼叫的環內,而是存儲StringBuilder內的字符值,它的值,則程序退出之前打印最小化代碼重複的溶液:

StringBuilder sb = new StringBuilder(); 
char c = 33; 
for (int i = 1; c <= 127; c++, i++) { 
    sb.append(c); 

    if (i % 10 == 0) { 
     sb.append("\n"); // newline every 10th character 
    } else { 
     sb.append(" "); // else append with a separator 
    } 
} 
System.out.println(sb);