Leitura via teclado e Conversão de entrada de dados

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.

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

[code]
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();
	   } [/code]

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