Ajuda para simplificar este código!

Galera…

Fiz uma calculadora que faz conversão de valores.

Este código abaixo é executado quando você seleciona a opção 1 no menu do meu programa:

if ( numero == 1 )
			{
				System.out.println();
				System.out.println("#########################################");
				System.out.println();
				System.out.println("CONVERSOR 1: DECIMAL PARA HEXADECIMAL");
				System.out.println();
				System.out.println("Digite o valor Decimal:");
				decimal = sc.nextInt();
				String hex = Integer.toHexString(decimal);
				System.out.println();
				System.out.println("O valor " + decimal + " corresponde a [ " + hex + " ] em Hexadecimal.");
				System.out.println();
				System.out.println("#########################################");
				System.out.println();
				System.out.println("1	Calcular outro valor");
				System.out.println("2	Abrir o menu de conversores");
				System.out.println();
				System.out.println("3	SAIR");
				System.out.println();
				System.out.println("Digite o numero da opcao que deseja executar:");
				numero2 = sc.nextInt();
				while ( numero2 >= 4 || numero2 <= 0 )
				{
					System.out.println();
					System.out.println("#########################################");
					System.out.println();
					System.out.println("O numero " + numero2 + " nao corresponde a nenhuma opcao.");
					System.out.println();
					System.out.println("LEMBRE-SE: os numeros sao:");
					System.out.println();
					System.out.println("1	Calcular outro valor");
					System.out.println("2	Abrir o menu de conversores");
					System.out.println();
					System.out.println("3	SAIR");
					System.out.println();
					System.out.println("Digite o numero da opcao que deseja executar:");
					numero2 = sc.nextInt();
				}
				while ( numero2 == 1 )
				{
					System.out.println();
					System.out.println("#########################################");
					System.out.println();
					System.out.println("CONVERSOR 1: DECIMAL PARA HEXADECIMAL");
					System.out.println();
					System.out.println("Digite o valor Decimal:");
					decimal = sc.nextInt();
					String hex2 = Integer.toHexString(decimal);
					System.out.println();
					System.out.println("O valor " + decimal + " corresponde a [ " + hex2 + " ] em Hexadecimal.");
					System.out.println();
					System.out.println("#########################################");
					System.out.println();
					System.out.println("1	Calcular outro valor");
					System.out.println("2	Abrir o menu de conversores");
					System.out.println();
					System.out.println("3	SAIR");
					System.out.println();
					System.out.println("Digite o numero da opcao que deseja executar:");
					numero2 = sc.nextInt();
					while ( numero2 >= 4 || numero2 <= 0 )
					{
						System.out.println();
						System.out.println("#########################################");
						System.out.println();
						System.out.println("O numero " + numero2 + " nao corresponde a nenhuma opcao.");
						System.out.println();
						System.out.println("LEMBRE-SE: os numeros sao:");
						System.out.println();
						System.out.println("1	Calcular outro valor");
						System.out.println("2	Abrir o menu de conversores");
						System.out.println();
						System.out.println("3	SAIR");
						System.out.println();
						System.out.println("Digite o numero da opcao que deseja executar:");
						numero2 = sc.nextInt();
					}
				}
				if ( numero2 == 2 )
				{
					System.out.println();
					System.out.println("############### CONVERSOR DE VALORES ###############");
					System.out.println();
					System.out.println("	1	Decimal para Hexadecimal");
					System.out.println("	2	Hexadecimal para Decimal");
					System.out.println("	3	Decimal para Binario");
					System.out.println("	4	Binario para Decimal");
					System.out.println("	5	Decimal para Octal");
					System.out.println("	6	Octal para Decimal");
					System.out.println();
					System.out.println("	9	SAIR");
					System.out.println();
					System.out.println("Digite o numero da opcao que deseja executar:");
					numero = sc.nextInt();
					if ( numero == 9 )
					{
						System.out.println();
						System.out.println("#########################################");
						System.out.println();
						System.out.println("	O PROGRAMA FOI ENCERRADO");
						System.out.println();
						System.out.println("#########################################");
						System.exit(1);
					}
					while ( numero < 1 || numero > 6)
					{
						System.out.println();
						System.out.println("#########################################");
						System.out.println();
						System.out.println("O numero " + numero + " nao corresponde a nenhuma opcao.");
						System.out.println();
						System.out.println("LEMBRE-SE: os numeros sao:");
						System.out.println();
						System.out.println("	1	Decimal para Hexadecimal");
						System.out.println("	2	Hexadecimal para Decimal");
						System.out.println("	3	Decimal para Binario");
						System.out.println("	4	Binario para Decimal");
						System.out.println("	5	Decimal para Octal");
						System.out.println("	6	Octal para Decimal");
						System.out.println();
						System.out.println("	9	SAIR");
						System.out.println();
						System.out.println("Digite o numero da opcao que deseja executar:");
						numero = sc.nextInt();
						if ( numero == 9 )
						{
							System.out.println();
							System.out.println("#########################################");
							System.out.println();
							System.out.println("	O PROGRAMA FOI ENCERRADO");
							System.out.println();
							System.out.println("#########################################");
							System.exit(1);
						}
					}
				}
				if ( numero2 == 3 )
				{
					System.out.println();
					System.out.println("#########################################");
					System.out.println();
					System.out.println("	O PROGRAMA FOI ENCERRADO");
					System.out.println();
					System.out.println("#########################################");
					System.exit(1);
				}
			}

Como são 6 opções tive que fazer este mesmo código para as outras 5 opções de conversão do menu, o que deixou o código enoooorme.

Alguém poderia me ajudar a simplificar ele usando apenas for, do while, switch, string e estruturas semelhantes ?

Nada muito complexo… Meu professor não quer que usemos estruturas que ele ainda não ensinou.

Inclusive, o convertohexstring, algo assim, não vou poder usar. Vou ter que fazer para ler o número dec e retornar ele em hex e vice-versa, utilizando somente cálculos como faz no papel mas implementar isso em Java, ou seja: to fudido.

Se alguém puder dar uma luz para algum dos meus problemas, fico muito agradecido! hauehsauhe

Falooou abraços

ae Kolling,

fiz um exemplo de como poderia ser esse teu programa ai, agora só tem que criar os outros metodos e implementa-los, qualquer duvida é só falar.

public class Exemplo 
{
	public static void main(String[] args)
    {
		int numero = 0;
		
		do
		{
			System.out.println("    1   Decimal para Hexadecimal");  
			System.out.println("    2   Hexadecimal para Decimal");  
			System.out.println("    3   Decimal para Binario");  
			System.out.println("    4   Binario para Decimal");  
			System.out.println("    5   Decimal para Octal");  
			System.out.println("    6   Octal para Decimal"); 
			System.out.println("    0   SAIR");
			System.out.println();
			System.out.print("Digite uma opcao: ");
			
			numero = new Scanner(System.in).nextInt();
			
			switch (numero) 
			{
			case 1:
				decimalParaHexadecimal();
				break;
			case 2: 
				hexadecimalParaDecimal();
				break;
			case 0:
				System.out.println("\nSaindo...");
				return;
			default:
				System.out.println("\nOpcao Invalida");
				break;
			}
		}while(numero != 0);

	}
	
	public static void decimalParaHexadecimal(){
		System.out.println("\nFaz calculo dec to hex aqui");
	}
	public static void hexadecimalParaDecimal(){
		System.out.println("\nFaz calculo hex to dec aqui");
	}
}

Usar o switch como nosso amigo fez acima, fica melhor mesmo…

Além do mais você pode dividir em funções o seu programa (Assim como ele fez)…

Eu custumo criar uma para cada item do menu, inclusive um para o menu em si.

public static void mostrarMenu(){ System.out.println("\n ..:: Menu ::.."); System.out.println("1 - Fazer algo"); System.out.println("2 - Fazer outro"); }

E coloco uma flag para controle do loop:

boolean continuar = true;

while(continuar){
  //mostra menu
  //pega leitura do usuario
  //processa opção (switch)
  //Realiza os calculos
  //volta para o menu
}

quando ele escolher sair, basta mudar a flag:

continuar = false;

Acabei por não analisar o código do nosso amigo aí em cima,
então se ele fez isso, me desculpe! Acho que da para ficar bem organizado…

abraços