(Для меня) необъяснимое значение в массиве символов - PullRequest
0 голосов
/ 28 сентября 2011

Я застрял с чем-то, чего я действительно не понимаю, и я надеюсь, что кто-то здесь понимает.

Кто-нибудь может мне объяснить, почему nextOne имеет значение 51?Понятно, что в индексе 2 в массиве выражений находится число 3, так почему он хранит 51 вместо 3 в nextOne?

Вот оно: problem reading value in character array

Ответы [ 9 ]

4 голосов
/ 28 сентября 2011

Символ в массиве - «3».У него значение Unicode 51 - это символ U + 0033.

Если вы измените тип nextOne на char вместо int, вместо этого вы увидите «3».

Важно понимать разницу между цифрами как символами и целочисленными значениями, а также понимать числа, которые скрываются за символами;в Java это, в основном, кодовые единицы UTF-16.

2 голосов
/ 28 сентября 2011

Символ '3' соответствует целочисленному значению 51 (это значение ascii / unicode).

2 голосов
/ 28 сентября 2011

Потому что 51 является значением ASCII для цифры 3.

1 голос
/ 28 сентября 2011

51 - это код ASCII для трех, так как expression - это массив символов, а nextOne - это int, вы должны преобразовать символ в тип int

.
1 голос
/ 28 сентября 2011

nextOne содержит значение символа , которое в случае символа '3' равно 51.

Если вам нужна цифра, представленная символом, вам необходимопреобразовать это.С ASCII это можно сделать, вычтя значение символа '0'.

1 голос
/ 28 сентября 2011

Первая цифра 3 и ее код ASCII 51.

0 голосов
/ 29 сентября 2011

Я сделал это! Теперь это работает, и я бы не справился без вас, ребята. Тем не мение! Забавно, что вы все предлагали варианты для меня, но не (на мой взгляд) окончательный вариант. Вы, ребята, сказали мне, что целое число, которое хранилось, - это код ASCII для 3, а не фактическое целое число 3. Это напомнило мне метод в классе Character, getNumericValue (char). С помощью этого метода я просто извлек целое число 3 из массива char, не конвертируя себя.

nextNumber = nextNumber * 10 + Character.getNumericValue(expression[k]);

Спасибо @howard за редактирование ссылки на загруженное изображение

0 голосов
/ 28 сентября 2011

вы видите ascii-код символа «3», если вы хотите, чтобы цифру нужно было вычесть '0', чтобы получить целочисленное значение

0 голосов
/ 28 сентября 2011

Код ASCII числа 3 - 51. Следующее выражение напечатает "true" в консоли.

System.out.println('3' == (char) 51);

Посмотрите таблицу ASCII для получения дополнительной информации.

...