[RESOLVIDO]Dúvida no ParseInt

Estou fazendo uma aplicação de conversação e estou com um problema.
Faço uma pergunta e a resposta pode ser um número ou ‘Não’. Segue o código abaixo:

//limite da contagem
System.out.println("$$ Eu sei contar até 100!");
System.out.println("$$ Quer me ver contando de 1 até quanto?       $$");
	String contar = input.nextLine();
	
	//condição da não contagem
		if(contar.equals("Não")){
			System.out.println("Tudo bem, sem problemas!");
		}
	//condição de limite
	int cont = Integer.parseInt(contar);
	int limiteMax = 1;
	
	if (cont > 100){
		System.out.println("- O número informado é maior que 100");
		System.out.println("Desculpe-me. eu só sei contar até 100.");
	} else {
		System.out.println("- O número está dentro do limite que "+ personagem +" sabe contar.");
		System.out.println("Vou contar então: ");
		while (limiteMax <= cont){
			System.out.print(limiteMax + " ");
			limiteMax++;

e esta dando esse erro:

Exception in thread “main” java.lang.NumberFormatException: For input string: “Não”

Alguém me ajuda, por favor.

Não entendi algumas variaveis e fiz algumas mudanças espero ter ajudado !

Scanner teclado=new Scanner(System.in);
System.out.println("$$ Eu sei contar até 100!");
System.out.println(“Quer que eu conte [S/N]”);
String resposta=teclado.nextLine();
System.out.println("$$ Quer me ver contando de 1 até quanto? $$");
int contar=teclado.nextInt();

//condição da não contagem
	if(resposta.equals("N")){
		System.out.println("Tudo bem, sem problemas!");
	}
//condição de limit
int limiteMax = 1;

if (contar > 100){
	System.out.println("- O número informado é maior que 100");
	System.out.println("Desculpe-me. eu só sei contar até 100.");
} else {
	System.out.println("- O número está dentro do limite que ss sabe contar.");
	System.out.println("Vou contar então: ");
	while (limiteMax <= contar){
		System.out.print(limiteMax + " ");
		limiteMax++;

No seu código você esta usando 2 entradas pelo Scanner e no meu caso eu tenho que usar apenas uma.

Sendo assim tenho que usar a transformação em algum momento de String para Integer.

vamos la

existe um problema quando vc lê caracteres ditos “especiais” como ã

dependendo do encoding do terminal vc pode receber isso com charset, por exemplo, UTF-8.

ã pode ser representado de duas formas: uma sequencia de bytes que representa esta letra em especifico ( a com til ) e outra com a combinação: letra a + acento. isso se chama surrogate pair.

o problema é que se vc usar o equals vc pode chegar num “paradoxo” onde Não é diferente de Não por que os bytes não são os mesmos, apesar do resultado.

pra vc minimizar este problema, especificamente em UTF-8 vc precisa fazer uma Normalização ( NFD/ NFC - pra começo de conversa ) e ter certeza que todas as strings tem o mesmo padrão e, principalmente, o mesmo encoding. senão vc pode comparar “Não” em utf-8 com “Não” em utf-16 e isso nunca sera o mesmo.

existem outros tipos de encoding ainda…

por esta razão a gente sugere: mano faz comparação de strings vindos da entrada padrão o MENOS complicado possivel. se vc puder usar S ou N como sim ou não, melhor.

melhor ainda, le as coisas até um valor padrão como… -1 ( nesse caso vc sempre lê numeros )

ou ainda: começa recebendo a quantidade e depois vc so faz um loop lendo aqueles x entradas.

sabe o que é bom mesmo? nunca fazer esse tipo de interação com o usuario. é super raro um programa perguntar coisas pro usuario: a galera escreve um arquivo de configuração, usa parametros do main, variavel de ambiente, http, e por ai vai.

mas enfim, exercicio é exercicio. domina esse bicho ai e manda bala

então mano, isso é um trabalho da faculdade e os parâmetros que o professor passou foram esses …
tenho que segui-los ;~~

O teu problema não está nos caracteres especiais, está aqui. Se a resposta é Não, estás na mesma a tentar converter para inteiro e vai ter o teu erro.
Só podes continuar se a resposta não for Não:

if(contar.equals("Não")){
    System.out.println("Tudo bem, sem problemas!");
} else {
   ....
  aqui sim, converte para inteiro, valida os limites e conta
}
2 curtidas

Muito obrigado!! Resolveu meu problema!!!

voce esta certo, não me atentei para este detalhe.

Não sei qual é limite que o teu professor pretende ir. Provavelmente assim já estará bom para ele mas tem em atenção que ainda é muito fácil provocar erros.
Se, por exemplo, no teu input escreveres qualquer coisa que não um número (e que não seja a palavra “Não”) vais ter exatamente o mesmo erro.