Galera é o seguinte estou com problema no meu algoritmo e preciso de ajuda.
Estou estudando lógica de programação em 2 linguagens Pascal e Java, o exercício proposto foi o este:
Faça um algoritmo que leia o numero inicial e número final, sendo que o número final não pode ser menor que o inicial(caso o usuário digite o final menor que o inicial informar o erro). Entre o número inicial e número final mostrar o usuário quantos números são pares e quantos são impares.
Temos que realizar o exercício usando laços de repetição. No Pascal seguindo esse lógica, é claro com algumas diferenças típica da linguagem como por exemplo em vez de chaves para abrir e fechar um bloco de comando, utiliza o begin e end, e entre outras. Rodou perfeitamente sem nenhuma falha.
Mas, no Java o programa ta vazando, se eu digito o Valor inicial menor que o Valor final, em vez de ele ir direto ao fim do laço enquanto e mostrar para o usuário a mensagem final usando o Swing
JOptionPane.showMessageDialog(null,“Ente o número “+num_inicial+” e o número “+num_final+” existem “+pares+” e “+impares+” impares”);
A tela simplesmente fica preta sem retorno nenhum. Já se o usuário digitar o valor final menor que o inicial, erra para entrar no laço do while e até que o usuário digita-se o valor final maior que o inicial a mensagem de erro continuaria aparecendo.
do
{
if (num_final < num_inicial) //condição do bloco
{
num_final= Integer.parseInt(JOptionPane.showInputDialog("Valor inválido! Digite um número maior que o valor inicial: "));
}
}
while(num_final >= num_inicial);
E depois qndo digita-se o valor final maior ou igual ao valor inicial executaria o laço while. Atualmente basta eu digitar uma vez no laço do while o valor final sendo menor ou maior que surge outro erro. Aparece a mensagem informando Entre o número “x” e número “y” existem 0 pares e 0 impares.
Andei pesquisando na net e olhei bem o algoritmo do meu professor e não encontrei o erro, está praticamente igual uma diferença ou outra, mas, que não afeta o resultado do algoritmo.
Oq pode há de errado com o meu algoritmo. Alguém pode me ajudar? Agradeço!
public class exc_35_enquanto_e_repita_pares_impares {
public static void main(String args[]){
int num_inicial, num_final, pares, impares, i;
pares=0;
impares=0;
i=0;
num_final=0;
num_inicial= Integer.parseInt(JOptionPane.showInputDialog("Digite o valor inicial: "));
i= num_inicial;
num_final= Integer.parseInt(JOptionPane.showInputDialog("Digite o valor final: "));
do
{
if (num_final < num_inicial) //condição do bloco
{
num_final= Integer.parseInt(JOptionPane.showInputDialog("Valor inválido! Digite um número maior que o valor inicial: "));
}
}
while(num_final >= num_inicial); //até que o valor seja o oposto da condição do bloco
while (i <= num_final)
{
if (i % 2 == 0)
pares=pares+1; //realiza a contagem dos números pares
else
{
impares=impares+1; //realiza a contagem dos números impares
}
i=i+1;
}
JOptionPane.showMessageDialog(null,“Ente o número “+num_inicial+” e o número “+num_final+” existem “+pares+” e “+impares+” impares”);
}
}