или umlaut или любой другой символ Unicode. Как я мог получить его код?
user31610 05 янв ’10 в 14:18 2010-01-05 14:18
2010-01-05 14:18
7 ответов
Просто преобразовать его в int :
char registered = ‘®’; int code = (int) registered;
На самом деле есть неявное преобразование из char в int так что вам не нужно указывать это явно, как я делал выше, но я бы сделал это в этом случае, чтобы было понятно, что вы пытаетесь сделать.
Это даст кодовую единицу UTF-16, которая совпадает с кодовой точкой Unicode для любого символа, определенного в базовой многоязычной плоскости. (И только символы BMP могут быть представлены как char значения в Java.) Как ответит Анджей Дойл, если вы хотите, чтобы код Unicode содержал произвольную строку, используйте Character.codePointAt() ,
Как только вы получите кодовую единицу UTF-16 или кодовые точки Unicode, но из которых целые числа, это зависит от вас, что вы будете делать с ними. Если вы хотите строковое представление, вам нужно решить, какое именно представление вы хотите. (Например, если вы знаете, что значение всегда будет в BMP, вам может потребоваться фиксированное четырехзначное шестнадцатеричное представление с префиксом U+ например, «U+0020» для пространства.) Это выходит за рамки этого вопроса, так как мы не знаем, каковы требования.
Кодирование и декодирование в Excel [ASCII]
user22656 05 янв ’10 в 14:20 2010-01-05 14:20
2010-01-05 14:20
Более полный, хотя и более подробный способ сделать это — использовать метод Character.codePointAt. Это будет обрабатывать символы «высокого суррогата», которые не могут быть представлены одним целым числом в диапазоне, который char может представлять.
В приведенном вами примере это не является строго необходимым — если символ (Unicode) может помещаться внутри одного (Java) char (такой как registered локальная переменная), то она должна попадать в u0000 в uffff диапазон, и вам не нужно беспокоиться о суррогатных парах. Но если вы смотрите на потенциально более высокие кодовые точки из массива String/char, то вызов этого метода целесообразен, чтобы охватить крайние случаи.
String input = . ; char fifthChar = input.charAt(4); int codePoint = (int)fifthChar;
String input = . ; int codePoint = Character.codePointAt(input, 4);
Это не только немного меньше кода в этом случае, но он будет обрабатывать обнаружение суррогатных пар для вас.
Источник: stackru.com
Программа возвращает код символа а не сам символ
Всем привет! Метод sumDigitsInNumber должен возвращать сумму цифр полученного числа (546), но вместо этого возвращает сумму кодов чисел из таблицы ASCII(возвращает 159, сумма кодов 53 + 52 + 54), изучаю Java меньше недели и никак не могу понять в чем проблема, пытался гуглить, но ничего не нагуглил. Помогите пожалуйста) P.S. столкнулся с проблемой не только в этой программе, для себя написал программу «угадай число» и там при вводе числа с клавиатуры через BufferedReader тоже возвращался код символа( Заранее всем спасибо!)
Java — Ввод данных — Ввод символа
public class Solution < public static void main(String[] args) < System.out.println(sumDigitsInNumber(546)); >public static int sumDigitsInNumber(int number) < String s = Integer.toString(number); char[] chars = s.toCharArray(); number = 0; for (int i = 0; i < chars.length; i++) < number += (int) chars[i]; >return number; > >
Отслеживать
8,089 5 5 золотых знаков 32 32 серебряных знака 51 51 бронзовый знак
задан 31 окт 2018 в 10:37
13 2 2 бронзовых знака
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Делал буквально на днях, но двумя другими способами. Здесь используются мои имена пакетов.
Основной класс SumOfDigits.java:
package info.sjd; import java.util.logging.Logger; import info.sjd.service.SumOfDigitsService; public class SumOfDigits < private static Logger logger = Logger.getLogger(SumOfDigits.class.getName()); public static void main(String[] args) < int number = 12345; int sumOfDigitsByIntegerDivision = SumOfDigitsService.sumOfDigitsByIntegerDivision(number); int sumOfDigitsByCharSplitting = SumOfDigitsService.sumOfDigitsByCharSplitting(number); logger.info(«The sum of digits of number » + number + » by integer division is » + sumOfDigitsByIntegerDivision); logger.info(«The sum of digits of number » + number + » by character splitting is » + sumOfDigitsByCharSplitting); >>
Сервисный класс SumOfDigitsService.java:
package info.sjd.service; public class SumOfDigitsService < public static int sumOfDigitsByIntegerDivision(int number) < int sumOfDigits = 0; while (number >0) < sumOfDigits = sumOfDigits + (number % 10); number = number / 10; >return sumOfDigits; > public static int sumOfDigitsByCharSplitting(int number) < int sumOfDigits = 0; String stringNumber = String.valueOf(number); for (int i = 0; i < String.valueOf(number).length(); i++) < sumOfDigits = sumOfDigits + Integer.parseInt(String.valueOf(stringNumber.charAt(i))); >return sumOfDigits; > >
В вашем случае скорее всего нужно будет разобраться с приведением типов и возможно использовать переопределение метода .toString().
Да, с приведением типов разберитесь. Все работает, если так: package info.sjd;
public class Solution < public static void main(String[] args) < System.out.println(sumDigitsInNumber(546)); >public static int sumDigitsInNumber(int number) < String s = Integer.toString(number); char[] chars = s.toCharArray(); number = 0; for (int i = 0; i < chars.length; i++) < number += Integer.parseInt(String.valueOf(chars[i])); >return number; > >
Источник: ru.stackoverflow.com
Как я могу получить код символа Юникода?
Или umlaut , или любой другой символ Юникода. Как я мог получить его код?
Geo 5 Янв 2010 в 17:18
7 ответов
Лучший ответ
Просто конвертируйте его в int :
char registered = ‘®’; int code = (int) registered;
На самом деле существует неявное преобразование из char в int , поэтому вам не нужно указывать его явно, как я сделал выше, но я бы сделал это в этом случае, чтобы было очевидно, что вы ‘ повторно пытаюсь сделать.
Это даст кодовую единицу UTF-16, которая совпадает с кодовой точкой Unicode для любого символа, определенного в базовой многоязычной плоскости. (И только символы BMP могут быть представлены как значения char в Java.) Как сказано в ответе Анджея Дойла, если вам нужна кодовая точка Unicode из произвольной строки, используйте Character.codePointAt() .
Когда у вас есть кодовая единица UTF-16 или кодовые точки Unicode, оба из которых являются целыми числами, вам решать, что с ними делать. Если вам нужно строковое представление, вам нужно точно решить, какой вид представления вы хотите. (Например, если вы знаете, что значение всегда будет в BMP, вам может понадобиться фиксированное 4-значное шестнадцатеричное представление с префиксом U+ , например «U+0020» для пробела.) Это выходит за рамки этого вопрос, хотя мы не знаем, каковы требования.
bn. 15 Мар 2021 в 22:53
5 Янв 2010 в 17:26
Он работает для каждого char , который представляет символ Юникода ниже U+FFFF , но не для каждого символа Юникода, поскольку char не может представлять весь Юникод. В зависимости от источника вашего char вам может потребоваться сделать что-то более сложное (и к этому тоже действительно следует подготовиться).
Источник: question-it.com