猿问

打印 Java 中的前 1000 个 Unicode 字符

我需要在 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 ==> 83

UnicodeTest.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 ==> 'ϧ'


HUWWW
浏览 192回答 2
2回答

翻翻过去那场雪

用于Character.toChars(int)从代码点转换为表示字符。下面将打印 U+0000 和 U+03E8 之间的所有 UTF 字符,前 1000 个代码点。public static void main(String[] args) {&nbsp; IntStream.range(0, 1000)&nbsp; &nbsp; .mapToObj(i -> "Char: " + i + " ==> " + new String(Character.toChars(i)))&nbsp; &nbsp; .forEach(System.out::println);}

慕无忌1623718

这是一个略有不同的答案,它不使用流。您应该能够修改它以产生您喜欢的任何输出。我正在使用一些技巧。第一个是它char是一个整数,可以提升为int. 所以为了初始化计数器,我实际上给它分配了第一个 ASCII 字符,它是' '(一个空格)。前 32 个 ASCII 字符是控制字符并且不打印,所以我只是跳过它们。第二个是,而不是调用Character.toChars()我只是强制转换为intto char。只要您完全控制输入并且没有范围错误,这就可以正常工作。&nbsp; &nbsp;public static void main( String[] args ) {&nbsp; &nbsp; &nbsp; for( int i = ' '; i < 1000; i++ )&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;System.out.println( "Char: " + Integer.toHexString( i )&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;+ " ==> " + (char)i );&nbsp; &nbsp;}
随时随地看视频慕课网APP

相关分类

Java
我要回答