2016-05-20 8 views
0

Как преобразовать целое число в его ASCII эквивалентно неявно, без использования каких-либо классов преобразования и без использования явного каста?Преобразование целого числа Java в ASCII-символ A-F неявно

Проблема в том, что я пытаюсь преобразовать целое число 12 в письмо C и добавить его в существующую строку. Моя попытка ниже:

s += 12 +'A'-10; 

Все это заставляет меня это выход 67, который является десятичным эквивалентом ASCII символа «C», но мне нужно буква C, чтобы быть на выходе, а не 67.

Есть ли способ сделать это без использования нескольких инструкций if-else-if, а также не использовать то, что было упомянуто выше?

+0

outpur зависит от того, как печатать на самом деле, как Вы печатаете его? – Ian

+1

Почему не просто 'String.format ("% X ", 12)'? –

ответ

2

Проблема заключается в том, что выражение на РИТ:

12 + 'A' - 10 

имеет тип int, т.к. char автоматически расширяется до. 10; поэтому оператор += свяжет целочисленное значение с строкой.

два варианта (среди прочих):

  1. приведённый к char:

    s += (char) (12 + 'A' - 10); 
    
  2. Использование String.format:

    s += String.format("%X", 12); 
    
2

Я не вижу вашей проблемы.

char s = 12 + 'A' - 10; 
    System.out.println("s = '" + s + "'"); 

принты s = 'C'.

+0

Проблема в том, что '12 + 'A' - 10' имеет тип' int', поэтому 's + = ' будет добавлять целочисленное значение, а не char. –

+0

@AndyTurner - Пробовал ли вы 's + = (char) (...)'? – OldCurmudgeon

+0

Да, см. Мой ответ. Дело в том, что это точно, оно работает, если вы назначаете (или отбрасываете) его на 'char', но OP этого не делает. –

0

Я предполагаю, что это:

char s = 'A' + 12 - 10; 

даст персонажу'C'