Leitura via teclado e Conversão de entrada de dados

1 resposta
C

Pessoal, fiz uma classe para ler dois numeros do teclado e calcular o quadrado do primeiro valor pelo segundo e o cubo do segundo valor pelo primeiro. Meu codigo é o seguinte:

try{	
		byte primeiroNumero[] = new byte[128];
		byte segundoNumero[] = new byte[128];
		int calc1, calc2, NumeroUm, NumeroDois;
		
		System.out.println("Entre com o primeiro numero: ");
		System.in.read(primeiroNumero);
		
		System.out.println("Digite o segundo numero: ");
		System.in.read(segundoNumero);	
		
		//pego o valor do teclado como um string. 
		String c1 = new String(primeiroNumero,0);
		//Converto a String para inteiro.
		NumeroUm = Integer.parseInt(c1);
		
		String c2 = new String(segundoNumero,0);
		NumeroDois = Integer.parseInt(c2);
		
		//Faço os calculos
		calc1 = ((NumeroUm*NumeroUm) * NumeroDois);
		calc2 = ((NumeroDois*NumeroDois*NumeroDois) * NumeroUm);
		
		System.out.println("Quadrado do Primeiro pelo Segundo :" + calc1);
		System.out.println("O cubo do segundo pelo primeiro: " + calc2);
		
	}catch(IOException ioe){
		System.out.println(ioe.toString());
		ioe.printStackTrace();
	}

Só que dá o seguinte erro quando coloco o segundo valor e dou enter.

java.lang.NumberFormatException: For input string: "15

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)

at java.lang.Integer.parseInt(Integer.java:435)

at java.lang.Integer.parseInt(Integer.java:476)

at src.LeituraNumeros.main(LeituraNumeros.java:26)

Exception in thread “main”

Qual é o problema?
Tem alguma forma melhor de pegar esses valores diretamente do teclado como Int ou realmente eu tenho que converte?

Obrigado.

1 Resposta

BrunoBastosPJ

esse contrutor Strig que você está usando está Deprecated, ou seja ele não é mais usado.

try{   
		      byte primeiroNumero[] = new byte[128];
		      byte segundoNumero[] = new byte[128];
		      int calc1, calc2, NumeroUm, NumeroDois;
		      
		      System.out.println("Entre com o primeiro numero: ");
		      System.in.read(primeiroNumero);
		      
		      System.out.println("Digite o segundo numero: ");
		      System.in.read(segundoNumero);   
		      
		      //pego o valor do teclado como um string.
		      String c1 = new String(primeiroNumero);
		      //Converto a String para inteiro.
		      NumeroUm = Integer.parseInt(c1.trim());
		      
		      String c2 = new String(segundoNumero);
		      NumeroDois = Integer.parseInt(c2.trim());
		      
		      //Faço os calculos
		      calc1 = ((NumeroUm*NumeroUm) * NumeroDois);
		      calc2 = ((NumeroDois*NumeroDois*NumeroDois) * NumeroUm);
		      
		      System.out.println("Quadrado do Primeiro pelo Segundo :" + calc1);
		      System.out.println("O cubo do segundo pelo primeiro: " + calc2);
		      
		   }catch(IOException ioe){
		      System.out.println(ioe.toString());
		      ioe.printStackTrace();
		   }

mudei o construtor para o que é usado que recebe apenas um array de char como parâmetro, e adicionai o método trim() nas Strings c1 e c2, o método trim() faz com que retire os espaços em branco da String, o que faz dar erro na hora da conversão para inteiro

Criado 25 de maio de 2006
Ultima resposta 25 de mai. de 2006
Respostas 1
Participantes 2