Dúvida com programinha tipo calculadora

Estou num exercício que pede um programa tipo calculadora, onde o usuário escolhe se quer adição, subtração, multiplicação ou divisão.
Após o usuário escolher o programa aleatóriamente traz probleminhas de matemática para o usuário responder.
O usuário recebe mensagens de parabéns se a resposta estiver correta, se estiver errada a resposta o usuário recebe mensagem de erro e pede novamente para o usuário dar a resposta.
Até aí tudo bem, eu consegui.
O problema é que o usuário pode escolher se quer que esses problemas de aritmética seja dado somente com números de um dígito ou escolher com dois dígitos.
Supondo que com um dígito seja (int) e dois dígitos seja (double). Segue o código abaixo feito somente com um dígito.
Qual a melhor maneira de fazer com dois dígitos? Seria deixar o código abaixo Classe Calculadora formulado com OO (Orientado a objeto) e criar uma nova classe tipo CalculadoraDoisDigitos para o de ponto flutuante em um novo programa? Fundindo depois as duas classe numa classe de teste?Ou tem como fazer no mesmo código abaixo sem comprometer a legibilidade?

[code]import java.util.Scanner;

public class Calculadora
{
public static void main ( String args[] )
{
int escolha, num1, num2, numero1, numero2, number1, number2, suaResposta;
int respostaAtual = 0;
Scanner scan = new Scanner ( System.in );

	do
	{  
    	System.out.println("\n\n-1 - Sair\n 1 - Somar\n 2 - Subtrair\n 3 - Multiplicar\n 4 - Dividir");
		System.out.print("\n\nEscolha uma escolhaeracao: ");
		escolha = scan.nextInt();
		if(escolha==-1){
		System.exit(0);
		}
		num1 = (int)(Math.random() * 9 +1); //para gerar números aleatório para tabuada de 1 a 10
		num2 = (int)(Math.random() * 9 +1);
		numero1= (int)(Math.random() *1000);//para gerar números aleatórios para soma e subtração
		numero2= (int)(Math.random() *1000);
		number1= (int)(Math.random()*100); //para gera números aleatórios para divisão
		number2= (int)(Math.random()*100);
					
		switch(escolha)
		{
			case 1:
			{
				System.out.printf("Quanto é %d + %d \n",numero1,numero2);
				respostaAtual=numero1+numero2;
				break;
			}
			
			case 2:
			{
				System.out.printf("Quanto é %d - %d \n",numero1,numero2);
				respostaAtual=numero1-numero2;
				break;
			}
			
			case 3:
			{
				System.out.printf("Quanto é %d x %d \n",num1,num2);
				respostaAtual=num1*num2;
				break;
			}
			
			case 4:
			{
				System.out.printf("Quanto é %d / %d \n",number1,number2);
				respostaAtual=number1/number2;
				break;
			}
		}

    
    System.out.printf("Insira a resposta: ");
    suaResposta = scan.nextInt();
    
    while(suaResposta!=respostaAtual) {
    System.out.printf("Resposta errada. Digite novamente a resposta\n");
    System.out.printf("Insira a resposta: ");
    suaResposta = scan.nextInt();
}
if (suaResposta==respostaAtual){
System.out.printf("Parabéns, você acertou\n");
}
}
    while(escolha != -1); 
}	

}[/code]

[quote=ucastrobr]Estou num exercício que pede um programa tipo calculadora, onde o usuário escolhe se quer adição, subtração, multiplicação ou divisão.
Após o usuário escolher o programa aleatóriamente traz probleminhas de matemática para o usuário responder.
O usuário recebe mensagens de parabéns se a resposta estiver correta, se estiver errada a resposta o usuário recebe mensagem de erro e pede novamente para o usuário dar a resposta.
Até aí tudo bem, eu consegui.
O problema é que o usuário pode escolher se quer que esses problemas de aritmética seja dado somente com números de um dígito ou escolher com dois dígitos.
Supondo que com um dígito seja (int) e dois dígitos seja (double). Segue o código abaixo feito somente com um dígito.
Qual a melhor maneira de fazer com dois dígitos? Seria deixar o código abaixo Classe Calculadora formulado com OO (Orientado a objeto) e criar uma nova classe tipo CalculadoraDoisDigitos para o de ponto flutuante em um novo programa? Fundindo depois as duas classe numa classe de teste?Ou tem como fazer no mesmo código abaixo sem comprometer a legibilidade?

[code]import java.util.Scanner;

public class Calculadora
{
public static void main ( String args[] )
{
int escolha, num1, num2, numero1, numero2, number1, number2, suaResposta;
int respostaAtual = 0;
Scanner scan = new Scanner ( System.in );

	do
	{  
    	System.out.println("\n\n-1 - Sair\n 1 - Somar\n 2 - Subtrair\n 3 - Multiplicar\n 4 - Dividir");
		System.out.print("\n\nEscolha uma escolhaeracao: ");
		escolha = scan.nextInt();
		if(escolha==-1){
		System.exit(0);
		}
		num1 = (int)(Math.random() * 9 +1); //para gerar números aleatório para tabuada de 1 a 10
		num2 = (int)(Math.random() * 9 +1);
		numero1= (int)(Math.random() *1000);//para gerar números aleatórios para soma e subtração
		numero2= (int)(Math.random() *1000);
		number1= (int)(Math.random()*100); //para gera números aleatórios para divisão
		number2= (int)(Math.random()*100);
					
		switch(escolha)
		{
			case 1:
			{
				System.out.printf("Quanto é %d + %d \n",numero1,numero2);
				respostaAtual=numero1+numero2;
				break;
			}
			
			case 2:
			{
				System.out.printf("Quanto é %d - %d \n",numero1,numero2);
				respostaAtual=numero1-numero2;
				break;
			}
			
			case 3:
			{
				System.out.printf("Quanto é %d x %d \n",num1,num2);
				respostaAtual=num1*num2;
				break;
			}
			
			case 4:
			{
				System.out.printf("Quanto é %d / %d \n",number1,number2);
				respostaAtual=number1/number2;
				break;
			}
		}

    
    System.out.printf("Insira a resposta: ");
    suaResposta = scan.nextInt();
    
    while(suaResposta!=respostaAtual) {
    System.out.printf("Resposta errada. Digite novamente a resposta\n");
    System.out.printf("Insira a resposta: ");
    suaResposta = scan.nextInt();
}
if (suaResposta==respostaAtual){
System.out.printf("Parabéns, você acertou\n");
}
}
    while(escolha != -1); 
}	

}[/code]
[/quote]

Fala ucastrobr, cara a sua pergunta é um tanto interesante. Mas acredito que em termos de acoplamento e coesão seria melhor você criar uma nova classe para ponto flutuante, assim a manutenção desse código ficaria mais simples.