为了账号安全,请及时绑定邮箱和手机立即绑定

打印 Java 中的前 1000 个 Unicode 字符

打印 Java 中的前 1000 个 Unicode 字符

HUWWW 2021-10-28 16:47:24
我需要在 Java 中打印前 1000 个 unicode 字符,问题是我不知道如何将文本和 Unicode 的十六进制组合在一起。示例:我想打印空格,所以在println命令中插入“\u00”,在while循环中我需要添加其他2 00,但我不能像文本一样插入它们!(“00”)。我给你我试过的东西......我在互联网上找到了这段代码,我已经修改了它,并且有一点错误,所以如果你也能修复它,我会很棒啊哈哈!public static void main(String[] args) {    char t[]="0123456789abcdef".toCharArray();    int i = 0;    while(i<1000) {            System.out.println("Char: " + t[i/16] + t[i%16] + " ==> " + "\u00" + t[i/16] + t[i++%16]);    }}PS:有时随机,编译器给我这个错误:at unicodetest.UnicodeTest.main(Char: 83 ==> 83UnicodeTest.java:10)第 10 行是:System.out.println("Char: " + t[i/16] + t[i%16] + " ==> " + t[i/16] + t[i++%16]);编辑:它应该是这样的:Char: 20 ==> ' 'Char: 21 ==> '!'Char: 22 ==> '"'Char: 23 ==> '#'Char: 24 ==> '$'Char: 25 ==> '%'Char: 26 ==> '&'Char: 27 ==> '''Char: 28 ==> '('Char: 29 ==> ')'Char: 2a ==> '*'Char: 2b ==> '+'Char: 2c ==> ','Char: 2d ==> '-'Char: 2e ==> '.'Char: 2f ==> '/'Char: 30 ==> '0'Char: 31 ==> '1'Char: 32 ==> '2'Char: 33 ==> '3'Char: 34 ==> '4'Char: 35 ==> '5'Char: 36 ==> '6'Char: 37 ==> '7'Char: 38 ==> '8'Char: 39 ==> '9'Char: 3a ==> ':'Char: 3b ==> ';'Char: 3c ==> '<'Char: 3d ==> '='Char: 3e ==> '>'Char: 3f ==> '?'Char: 40 ==> '@'Char: 41 ==> 'A'Char: 42 ==> 'B'Char: 43 ==> 'C'Char: 44 ==> 'D'Char: 45 ==> 'E'Char: 46 ==> 'F'Char: 47 ==> 'G'...Char: 37b ==> 'ͻ'Char: 37c ==> 'ͼ'Char: 37d ==> 'ͽ'...Char: 3e4 ==> 'Ϥ'Char: 3e5 ==> 'ϥ'Char: 3e6 ==> 'Ϧ'Char: 3e7 ==> 'ϧ'
查看完整描述

2 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

用于Character.toChars(int)从代码点转换为表示字符。下面将打印 U+0000 和 U+03E8 之间的所有 UTF 字符,前 1000 个代码点。


public static void main(String[] args) {

  IntStream.range(0, 1000)

    .mapToObj(i -> "Char: " + i + " ==> " + new String(Character.toChars(i)))

    .forEach(System.out::println);

}


查看完整回答
反对 回复 2021-10-28
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

这是一个略有不同的答案,它不使用流。您应该能够修改它以产生您喜欢的任何输出。


我正在使用一些技巧。第一个是它char是一个整数,可以提升为int. 所以为了初始化计数器,我实际上给它分配了第一个 ASCII 字符,它是' '(一个空格)。前 32 个 ASCII 字符是控制字符并且不打印,所以我只是跳过它们。


第二个是,而不是调用Character.toChars()我只是强制转换为intto char。只要您完全控制输入并且没有范围错误,这就可以正常工作。


   public static void main( String[] args ) {

      for( int i = ' '; i < 1000; i++ ) 

         System.out.println( "Char: " + Integer.toHexString( i ) 

             + " ==> " + (char)i );

   }


查看完整回答
反对 回复 2021-10-28

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号