2017-01-07 5 views
0

В Java, для Double, у нас есть значение для NaN (Not A Number).Java-символ: есть ли значение для «Not A Character»?

Теперь, для Character, есть ли у нас аналогичный эквивалент «Не символ»?

Если ответ отрицательный, то я думаю, что безопасный заменитель может быть Character.MIN_VALUE (который имеет тип char и имеет значение \u0000). Считаете ли вы, что этот запасник достаточно безопасен? Или у вас есть другое предложение?

+1

Что вы пытаетесь сделать в первую очередь? – Tunaki

+3

что о 'null'? –

+0

Моя мотивация похожа на то, почему «NaN» требуется для «Double», иногда иногда нужно передавать значение типа «Double», но значение действительно не является двойным значением с плавающей запятой. Ну ... когда я набирал этот ответ, я понял, что могу использовать «null», или, в Java 8, и для случаев, когда это значение возвращается из функции, я могу использовать «Необязательный », поскольку Reimeus имеет предложил. Благодаря! – leeyuiwah

ответ

2

В математике есть понятие «не число» - 5, деленное на 0, не является числом. Поскольку это понятие существует, существует NaN для типа double.

Персонажи представляют собой абстрактное понятие отображения чисел в символы. Идея «не характер» на самом деле не существует, так как используемая кодировка может варьироваться (UTF-8, UTF-16 и т. Д.).

Думайте об этом таким образом. Если я спрошу вас: «Что 5 разделено на 0?», Вы бы сказали, что это «не число». Но у нас есть определенный способ представления значения, хотя это не число. Если я нарисую случайную кривую и спрошу вас: «Какое письмо это?», Вы сказали бы: «Это не письмо». Но у нас есть , а не есть способ фактически представить эту мерцание за пределами того, что я только что нарисовал. Нет реального способа сообщить «несимвольный», который я только что нарисовал, но есть способ сообщить «не число» из 5, деленное на 0.

\u0000 - нулевой символ, который по-прежнему характер. Что именно вы пытаетесь достичь? В зависимости от вашей цели может быть достаточно \u0000.

+0

Да, я согласен, что на самом деле «null» будет достаточно хорошим. Или, в Java 8 и для случаев, когда значение является одним, возвращаемым из функции, я могу использовать опцию ', как предположил Реймеус. Благодаря! – leeyuiwah

1

Концепция «не-номер» на самом деле не принадлежит Java; скорее, Java определяет double как IEEE 754 double precision floating-point numbers, у которых есть эта концепция. (Тем не менее, если я правильно помню, Java ли указать некоторые сведения о NaN, что IEEE 754 оставляет открытым реализациям.)

Аналогичный стандарт Java char является Unicode: Java определяет char как UTF-16 код единицы.

Юникод имеет различные зарезервированные-неопределенные символы, которые вы могли бы использовать; например, U+FFFF ('\uFFFF') никогда не будет символом. В качестве альтернативы вы можете использовать U+FFFD ('\uFFFD'), который является символом, но в особенности является «символом замены», подходящим для замены мусора или недопустимых символов.

1

Зависит от того, что вы пытаетесь сделать. Если вы пытаетесь представить отсутствие персонажа вы могли бы сделать

Optional<Character> noCharacter = Optional.empty(); 
0

Вы можете проверить, если код персонажа больше или равна значению «а» и меньше или равно значению 'Z'. Это будет квалифицироваться как не символ, если не персонаж, вы имеете в виду букву алфавита. Вы можете расширить его до символов, таких как знак вопроса, полная остановка, запятая и т. Д., Но если вы хотите пойти дальше, чем ASCII-территория, я думаю, что она выходит из-под контроля.

Другой подход - проверить, является ли что-то числом. Если это не так, вы можете проверить, является ли это белым персонажем, тогда, если это не так, все остальное квалифицируется как персонаж, поэтому вы получите свой ответ. Это долгая дискуссия ИМО, потому что ответы различаются, в зависимости от вашего взгляда на то, что характер.

+0

Спасибо за ваше предложение. Но мой вопрос на самом деле о том, «как представить такое значение», а не о том, «как определить значение - это символ или нет». Для моего вопроса я принимаю другие предложения, которые могут быть «null», были бы достаточно хорошими. – leeyuiwah

+1

@leeyuiwah О, я вижу! Спасибо за разъяснение, что лучше читать в следующий раз ... –

Смежные вопросы