Распечатать первые 1000 символов Unicode в Java - PullRequest
0 голосов
/ 05 октября 2018

Мне нужно напечатать первые 1000 символов Юникода в Java, проблема в том, что я не знаю, как собрать текст и шестнадцатеричный код для Юникода.

Пример: я хочу напечататьпробел, поэтому в команду 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 ==> 'ϧ'

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Вот немного другой ответ, который не использует потоки.Вы должны быть в состоянии изменить его, чтобы получить любой вывод, который вам нравится.;

Я использую пару приемов.Во-первых, char является целым числом и может повышаться до int.Таким образом, чтобы инициализировать счетчик, я фактически назначаю ему первый символ ASCII, который равен ' ' (пробел).Первые 32 символа ASCII являются управляющими символами и не печатаются, поэтому я просто их пропускаю.

Во-вторых, вместо вызова Character.toChars() я просто приведу к int к char.Это прекрасно работает, если вы полностью контролируете вход и нет ошибок диапазона.

   public static void main( String[] args ) {
      for( int i = ' '; i < 1000; i++ ) 
         System.out.println( "Char: " + Integer.toHexString( i ) 
             + " ==> " + (char)i );
   }
0 голосов
/ 05 октября 2018

Используйте Character.toChars(int) для преобразования из кодовой точки в представление символов.Ниже будут напечатаны все символы UTF между U + 0000 и U + 03E8, первые 1000 кодовых точек.

public static void main(String[] args) {
  IntStream.range(0, 1000)
    .mapToObj(i -> "Char: " + i + " ==> " + new String(Character.toChars(i)))
    .forEach(System.out::println);
}
...