Ajuda em um exercício

7 respostas
el_loko

Olá Galera boa noite...

Estou estudando Java e fazendo alguns exercícios de uma apostila, em um dos exercícios me deparei com um problema que não consigo resolver. (Trata-se talvez mais de Lógica).
O enunciado pede para que o usuário entre com 4 números e que eu os coloque na ordem lida (até aqui eu fiz)

import javax.swing.JOptionPane;
public class Exercicio1 {
	public static void main(String[] args) {
		int num1, num2, num3, num4;
		String chrNum1, chrNum2, chrNum3, chrNum4;
		
		chrNum1 = JOptionPane.showInputDialog("Digite um número inteiro positivo");
		num1 = Integer.parseInt(chrNum1);
		
		chrNum2 = JOptionPane.showInputDialog("Digite outro número inteiro positivo");
		num2 = Integer.parseInt(chrNum2);
		
		chrNum3 = JOptionPane.showInputDialog("Digite outro número inteiro positivo");
		num3 = Integer.parseInt(chrNum3);
		
		chrNum4 = JOptionPane.showInputDialog("Digite outro número inteiro positivo");
		num4 = Integer.parseInt(chrNum4);
		
		JOptionPane.showMessageDialog(null,"O Primeiro número digitado foi:" + num1, "AVISO", 1);
		JOptionPane.showMessageDialog(null, "O Segundo número digitado foi:" + num2 , "AVISO", 1);
		JOptionPane.showMessageDialog(null , "O Terceiro número digitado foi:" + num3 , "AVISO", 1);
		JOptionPane.showMessageDialog(null, "O Quarto número digitado foi:" + num4, "AVISO", 1);
  }
}

Depois o programa pede para que eu coloque os números dados pelo usuário de forma crescente e decrescente, mais sem usar vetor, apenas usando o If-Else...
Comecei a fazer o seguinte:

if (num1>num2 & num1>num3 & num1>num4){
		System.out.println (num1); }
	else if (num2>num3 & num2>num4){
		System.out.println (num2);}
	else if (num3>num2 & num3>num4){
		System.out.println (num3);}
	else
		System.out.println (num4);}

Mais não sei se estou fazendo a coisa certa nessa parte do If-Else...
Será que alguém podia me ajudar com essa parte?

desde já agradeço...

7 Respostas

C

deve estar dando problema na comparação

if (num1>num2 && num1>num3 && num1>num4){
		System.out.println (num1); }
	else if (num2>num3 && num2>num4){
		System.out.println (num2);}
	else if (num3>num2 && num3>num4){
		System.out.println (num3);}
	else
		System.out.println (num4);}
M

Procure por BubbleSort( Ordenação pelo método da bolha ). Utilize operadores de curto-circuito nas suas operações condicionais (&& ou ||), caso não saiba o porquê, dê uma pesquisada no google para ver a diferença entre eles.

el_loko

[i]Na realidade faltou mesmo o outro operador &

Mais a minha dúvida não é essa na verdade…

gostaria de saber como eu faço para colocar os números digitados em ordem crescente e decrescente usando o If-Else.

Isso que eu coloquei ai foi apenas um esboço do que eu estava pensando…Mais não sei se essa Lógica esta certa.[/i]

:slight_smile:

el_loko

mfjeng
[i]Eu até já ouvi falar desse método, mais como eu falei no enunciado não posso usar vetor para resolver essa questão, tenho que usar apenas o If-Else.

Mais agradeço a sua ajuda.[/i]

mpereira

Fala Loko!

Carinha tu é loko querendo um código desses, mas topei o desafio! :lol:

O caminho creio que é este, mas me enrrolei no final.
Os 3 primeiros ele ordena mas repete o terceiro no quarto; agora eu que te peço ajuda. Você consegue descobrir onde errei? Creio que é nos "else's".

Lá vai:

if (num1>num2 & num1>num3 & num1>num4){
	System.out.println (num1);
	if (num2>num3 & num2>num4){
		System.out.println (num2);
		if (num3>num4)
			System.out.println(num3);
		else
			System.out.println(num4);
		if (num4>num3)
			System.out.println(num4);
		else
			System.out.println(num3);
	}
	if (num3>num2 & num3>num4){
		System.out.println (num3);
		if (num2>num4)
			System.out.println(num2);
		else
			System.out.println(num4);
		if (num4>num2)
			System.out.println(num4);
		else
			System.out.println(num2);
	}
	if (num4>num2 & num4>num3){
		System.out.println (num4);
		if (num2>num3)
			System.out.println(num2);
		else
			System.out.println(num3);
		if (num3>num2)
			System.out.println(num3);
		else
			System.out.println(num2);
	}
}  

if (num2>num1 & num2>num3 & num2>num4){
	System.out.println (num2);
	if (num1>num3 & num1>num4){
		System.out.println (num1);
		if (num3>num4)
			System.out.println(num3);
		else
			System.out.println(num4);
		if (num4>num3)
			System.out.println(num4);
		else
			System.out.println(num3);
	}
	if (num3>num1 & num3>num4){
		System.out.println (num3);
		if (num1>num4)
			System.out.println(num1);
		else
			System.out.println(num4);
		if (num4>num1)
			System.out.println(num4);
		else
			System.out.println(num1);
	}
	if (num4>num1 & num4>num3){
		System.out.println (num4);
		if (num1>num3)
			System.out.println(num1);
		else
			System.out.println(num3);
		if (num3>num1)
			System.out.println(num3);
		else
			System.out.println(num1);
	}
} 

if (num3>num1 & num3>num2 & num3>num4){
	System.out.println (num3);
	if (num1>num2 & num1>num4){
		System.out.println (num1);
		if (num2>num4)
			System.out.println(num2);
		else
			System.out.println(num4);
		if (num4>num2)
			System.out.println(num4);
		else
			System.out.println(num2);
	}
	if (num2>num1 & num2>num4){
		System.out.println (num2);
		if (num1>num4)
			System.out.println(num1);
		else
			System.out.println(num4);
		if (num4>num1)
			System.out.println(num4);
		else
			System.out.println(num1);	
	}
	if (num4>num1 & num4>num2){
		System.out.println (num4);
		if (num1>num2)
			System.out.println(num1);
		else
			System.out.println(num2);
		if (num2>num1)
			System.out.println(num2);
		else
			System.out.println(num1);
	}
} 

if (num4>num1 & num4>num2 & num4>num3){
	System.out.println (num4);
	if (num1>num2 & num1>num3){
		System.out.println (num1);
		if (num2>num3)
			System.out.println(num2);
		else
			System.out.println(num3);
		if (num3>num2)
			System.out.println(num3);
		else
			System.out.println(num2);
	}
	if (num2>num1 & num2>num3){
		System.out.println (num2);
		if (num1>num3)
			System.out.println(num1);
		else
			System.out.println(num3);
		if (num3>num1)
			System.out.println(num3);
		else
			System.out.println(num1);
	}
	if (num3>num1 & num3>num2){
		System.out.println (num3);
		if (num1>num2)
			System.out.println(num1);
		else
			System.out.println(num2);
		if (num2>num1)
			System.out.println(num2);
		else
			System.out.println(num1);
	}
}

Um abraço!!!

el_loko

[i]É verdade Marcelo é coisa de louco mesmo, to fazendo jus ao apelido…
:slight_smile:

No código que você postou realmente tem um esse problema da repetição dos números. Eu não identifiquei o erro no código, mais ele nunca retorna o menor valor digitado e sim repete o segundo menor.

Eu to tentando entender a lógica que você usou pra fazer isso. Acho que tenho que ler um pouco mais sobre o uso do “If”. Eu pensei que se usar o “Else-If” ficaria mais fácil nesse código.

De qualquer forma muito obrigado pela paciência
fico agradecido…

abraço :wink:[/i]

S

Em vez de colocar tantos If’s e else’s tente se informar sobre recursividade, creio que da pra resolver dessa forma.

Criado 7 de abril de 2008
Ultima resposta 7 de abr. de 2008
Respostas 7
Participantes 5