Почему я получаю разные результаты при добавлении символа? - PullRequest
0 голосов
/ 03 марта 2020

вот мой код

ArrayList <String> arr = new ArrayList<String>();
        arr.add("123 456");
        String []arr2 = arr.get(0).split(" ");

        char[]x=arr2[0].toCharArray();
        char[]y=arr2[1].toCharArray();

        System.out.println(x[0]);
        System.out.println(y[0]);

        int z = x[0]+y[0];
        System.out.println(z);

я получаю результат 1 6, но z равен 103, как это возможно, когда

    char xx=1;
        char yy=6;

        int zz = xx+yy;
        System.out.println(zz);

приводит к 7

Ответы [ 3 ]

2 голосов
/ 03 марта 2020

Почему вы добавляете char примитивы?

Если вы пытаетесь объединить, он работает только внутри объектов String или между String и примитивами.

https://docs.oracle.com/javase/tutorial/java/data/strings.html

Если вам интересно, почему вы получаете эти результаты, char является своего рода совместимым примитивом с int, поэтому они могут быть суммированными (они вернет сумму значений ASCII, соответствующих символам).

http://www.asciitable.com/

Здесь вы можете проверить значения для ваших символов, но я не думаю, что это то, что вы хотите сделать.

0 голосов
/ 03 марта 2020

Полагаю, вы немного запутались между массивом, строкой и целыми числами ...

Основная проблема в int z = x[0]+y[0];, когда вы получаете X и Y как Char, поэтому они объединяют строку, поэтому "1" + "1" = "11" и чем преобразовать строку в int ... так что "1" + "6" = "16" преобразовывая в int, они попытались получить для него представление числа, которое выглядит как 103

Что вы могли бы сделать, если вы пытаетесь достичь 7, это конвертировать Char в Int прямо здесь int z = x[0]+y[0]; будет таким образом int z = Integer.parseInt(x[0])+Integer.parseInt(y[0]);, так что теперь будет 1 + 6 = 7

0 голосов
/ 03 марта 2020

Как отмечали другие в комментариях, во втором примере вы добавляете

int xx = 1 и int yy = 6, таким образом xx + yy возвращает 7.

Однако в В первом примере вы добавляете cx = '1' и cy = '6', поэтому int value = cx + cy оценивается как 48 + 54

...