2017-05-12 35 views
5

我想製作一個程序,通過\ u7000(1000個符號)打印所有Unicode符號\ u6000。我的程序打印50個字符,開始一個新行,打印50個以上等(這裏沒有問題)。如何在特定範圍內打印unicode符號?

我知道如何打印Unicode符號,但我不知道如何遞增打印它們(每次加1)。下面是我的程序:

public class UnicodePrinter { 
    public static void main(String args[]) { 
     for (int i = 6000; i<7000; i++) { 
      if(i%50 == 0) { 
       System.out.println(); 
      } 
      System.out.print("\u"+i); //issue here, see below 
     } 
    } 
} 

我在我的打印語句,在那裏我輸入"\u"+i說:「無效的Unicode」,因爲\u沒有與數字完成得到一個錯誤,但我不知道如何解決它。

回答

8

就直接生成char S,這樣的:

public class UnicodePrinter { 
    public static void main(String args[]) 
    { 
     for (char i = '\u6000'; i < '\u7000'; i++) { 
      if (i % 50 == 0) { 
       System.out.println(); 
      } 
      System.out.print(i); //issue here, see below 
     } 
    } 
} 
+1

這實際上是正確的答案,只有一個缺陷是循環中使用的值 –

+0

@AdrianShum你是對的。我修改了我的代碼。 –

+0

代碼的一個問題可能是您的控制檯字體不支持所需的unicode字符。在這種情況下,你可以將字符打印成(UTF-8編碼)文件 –

-1

它只是轉換爲一個char將其轉換爲十六進制後:

for (int i = 6000; i<7000; i++) { 
    if(i%50 == 0) { 
     System.out.println(); 
    } 
    char c = (char) Integer.parseInt(String.valueOf(i), 16); 
    System.out.print(c); 
} 
+0

我沒有downvote,但我試過運行你的代碼,它只打印問號。 –

+0

我得到相同的輸出 - 那些不是正確的字符。我們檢查它:'System.out.println(「\ u6000」);'我認爲這個輸出是正確的。 –

+0

哎呀,我的壞。這是正確的,謝謝你的回答 – CodingNinja