Вы рассматриваете персонажа (char
) как число (integer
). Вот пример, чтобы изолировать то, что вы видите.
Этот код принимает строковое значение «2» и получает из него символ, а затем печатает символ.
char c = "2".charAt(0);
System.out.println("c: " + c);
--> c: 2
Есливы пробуете то же самое, но сохраняете результат как int
, сохраненное значение - это не то же самое, а вместо этого "50":
int i = "2".charAt(0);
System.out.println("i: " + i);
--> i: 50
Под обложками любое символьное значениепредставлены численно, поэтому символ '2' является целым числом 50. Вы можете открыть диаграмму ASCII, чтобы увидеть, как они отображаются.
Существует множество способов исправить ваш код, но так как вы уже начинаете со строкизначение, чтобы получить правильный результат, используйте Integer.parseInt()
, например:
int parsedValue = Integer.parseInt("2");
System.out.println("parsedValue: " + parsedValue);
--> parsedValue: 2