2017-05-12 37 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