A minha ideia é obter os dois primeiros dígitos inseridos pelo usuário. Por exemplo, se o usuário digita 55423, eu quero trabalhar só com os dígitos 55. O problema é que está sendo retornado um valor sem sentido: eu digito 11 e o retorno é 98, se digito 13, o retorno é 100.
Eu fiz a seguinte modificação no código:
int YYGGId = scanner.nextInt();
char[] YYGGIdDigitos = String.valueOf(YYGGId).toCharArray();
String YY = YYGGIdDigitos[0] + "" + YYGGIdDigitos[1]; //Adicionei essa String
System.out.println(YY);
Dessa maneira, passei a obter o resultado desejado. Alguém pode me explicar por que acontece o erro no primeiro código?
O java é uma linguagem fortemente tipada, ou seja o tipo é importante. O que estava acontecendo é que você estava capturando como int (inteiro), mas o estava tratando para extrair os dois primeiros dígitos como sendo uma String, entendeu?
Isso não é um erro, mas uma característica do Java.
O operador + serve para somar valores, a única exceção é no caso do tipo String, onde ele faz uma concatenação.
Então quando você faz YYGGIdDigitos[0] + YYGGIdDigitos[1], você não está concatenando dois caracteres mas sim somando o valor deles.
Neste caso você tem dois char com o símbolo '1' que equivale à 49. 49 + 49 = 98
Na segunda versão do código, ao utilizar o string vazio (YYGGIdDigitos[0] + “” + YYGGIdDigitos[1]), você altera a função do operador ‘+’. Ele deixa de ser soma, e passa a ser concatenação.