Я довольно новичок в Java, поэтому, пожалуйста, будьте осторожны.
Кажется, это общий вопрос, но я все еще не могу найти ответ, который ищу.
Я пишу консольное приложение, которое будет принимать строку символов и выводить их на экран, но больше. Например: «JAVA» будет печататься как:
JJJJJ A V V A
J A A V V A A
J A A V V A A
J AAAAA V V AAAAA
J A A V V A A
J J A A V V A A
JJJ A A V A A
Ничего особенного там нет. Строка разбивается на символы, каждый символ затем ищется в большом регистре переключателя, который затем возвращает большую букву. После того, как при необходимости будет выполнена упаковка, большие буквы будут склеены и напечатаны.
Это было слишком просто, и так как я хотел бы сделать свою жизнь более сложной, я хочу разрешить определенные символы Юникода, такие как черное сердце (❤) \ u2674 (что, как утверждает карта символов Windows, так или иначе) ). По сути, передача какого-либо кода в параметр будет заменена внутри сильного и интерпретирована как символ Юникода, например: JAVA {HEART} может выводить (я знаю, что сердце испорчено, но оно отображается нормально с моноширинным шрифтом) ):
JJJJJ A V V A ❤❤ ❤❤
J A A V V A A ❤❤❤❤❤❤
J A A V V A A ❤❤❤❤❤
J AAAAA V V AAAAA ❤❤❤❤
J A A V V A A ❤❤❤
J J A A V V A A ❤❤
JJJ A A V A A ❤
Насколько я знаю, юникод должен вписываться в символ (2 байта) и обязательно должен помещаться в int (4 байта), поэтому я провел эксперимент. На улице говорят, что приведение к int даст вам код персонажа.
String unicodeStr = "\u2674"; // Unicode for black heart.
System.out.println(unicodeStr.getBytes().length); // Only one byte, so should fit into a char, right?
char unicode = '\u2674'; // All good so far.
System.out.println((int)unicode); // Returns 9844. WTAF??
System.exit(-1); // Argh! Oh noez... Panic!
Очевидно, я что-то здесь неправильно понимаю, но я не знаю что. Кто-нибудь может объяснить, почему я получаю неправильный код? Я пытался использовать codePoints, но, очевидно, я тоже не знаю, что я делаю с этим. Если бы кто-нибудь мог указать мне правильное направление, я был бы вечно благодарен. Цель состоит в том, чтобы разбить строку на символы и перевести каждый символ в большую букву с помощью регистра.