Lógica para definir o maior e o menor entre 3 números [RESOLVIDO]

11 respostas
hackum

Olá, boa noite!
Bom, estou lendo o livro do Java como Programar. Então, eu me deparei com um exercicio que pede para que o usuário insere três digitos, e definir os três digitos o maior e o menor. Não quero resposta do exercicio, quero apenas que me ajudem a encontrar a lógica para o mesmo. Portanto, vamos lá; pensei da seguinte forma:

//Aplicativo Java que tem como função pedir ao usuário que digite dois inteiros e fazer a soma
//e exibir o maior e o menor

import java.util.Scanner; //importa a classe Scanner para obter dados a partir da janela de comando
public class excalc5 {
	
	//inicialização do programa Java
	public static void main(String args[])
	{
		
		//chama e/ou cria Scanner para obter dados a partir da janela de comando
		Scanner input = new Scanner(System.in);
		
		int number1;
		int number2;
		int number3;
		
		int soma;
		int max;
		int mim;
		int numero3 = 0;
		
		System.out.print("Digite o primeiro número:   \n");
		number1 = input.nextInt();
		
		System.out.print("Digite o segundo número:    \n");
		number2 = input.nextInt();
		
		System.out.print("Digite o terceiro número:   \n");
		number3 = input.nextInt();
		
         if (number1 > number2)
              number1 = numero3;
              number2 = numero3;
              else
            	  number1 = 
		
		
	}

}

Vejamos, a minha lógica para encontrar o maior e o menor, eu fiz assim: o if (number1 > number2); caso for maior, vai atribuir o resultado a uma variavel; caso for menor, fazer o mesmo procedimento. E pego o resultado de ambos procedimentos e coloco-a em uma variavel, por exemplo int variavelexemplo, e assim, pego o a variavel exemplo e uso o if(variavelexemplo > number3) e assim sendo pego o resultado. Mas seguindo minha lógica, não consigui fazer em Java. Lembrando que eu não posso usar procedimentos avançados em Java, pois estou no inicio, portanto tenho que usar procedimentos simples. Alguem poderia me ajudar ?

Um grande abraço a todos!

11 Respostas

nakai000

Bom, a sua lógica pra mim está certa, para passar para o código
você cria um if para saber se o primeiro número é maior que o segundo
e salva o resultado em uma variável, depois faz outro if para
comparar se o terceiro número é maior do que o da váriavel

hackum

Mas veja:

int local;
if (number1 > number2)
   //se sim
    local = number1, number2;

Seria assim ?
Me dê informações de como seria no código.
Até…

nakai000

A pensei que vocÊ não queria código :lol:

int local;
//aqui você está comparando se number1 é maior que number2,
//se sim salva o valor de number1 na variável local, se não
//salva o valor de number2
if(number1 > number2)
local = number1;
else
local = number2;

agora você compara local com number3

P

Ola,

Essa eh a versao simplificada de um problema classico de ordenacao. A ideia eh ordenar a lista de forma ascendente
e depois obter o primeiro e o ultimo elemento. Para efetuar a ordenacao existem dezenas de algoritmos, cada um
com uma ordem de complexidade. No caso, o seu raciocinio eh quase um Buble Sort, entao, de uma lida na definicao
do Buble Sort e implemente! Nota: O Buble Sort eh extremamente ineficiente :slight_smile:

[ ]'s
Angelo

hackum

Não consigui obter o maior número, veja o código:

//Aplicativo Java que tem como função pedir ao usuário que digite dois inteiros e fazer a soma
//e exibir o maior e o menor

import java.util.Scanner; //importa a classe Scanner para obter dados a partir da janela de comando
public class excalc5 {
	
	//inicialização do programa Java
	public static void main(String args[])
	{
		
		//chama e/ou cria Scanner para obter dados a partir da janela de comando
		Scanner input = new Scanner(System.in);
		
		int number1;
		int number2;
		int number3;
		
		int soma;
        int local;
		int numero3 = 0;
		
		System.out.print("Digite o primeiro número:   \n");
		number1 = input.nextInt();
		
		System.out.print("Digite o segundo número:    \n");
		number2 = input.nextInt();
		
		System.out.print("Digite o terceiro número:   \n");
		number3 = input.nextInt();
		
       if (number1 > number2)
    	   local = number1;
       else
    	   local = number2;
       
       if(local > number3)
    	   System.out.printf("O número maior é: %d", number3);
		
		
	}

}

Qual é o erro ?

Nota: não consigui entender o que o schranko disse em sua postagem.

nakai000

Você está comparando se local é maior que number3
e está retornando o valor de number3 se local for maior ¬¬
você tem que retornar o valor de local no lugar do number3

se o valor de local não for maior que number3 você retorna o number3

hackum

Obrigado nakais por me ajudar. Consigui executar perfeitamente o programa.

Boa noite.

DavidUser
if (number1 > number2 && number1 > number3) 	//o numero 1 maior que o 2 e 3 ,senão o numero maior é 2 ou 3
	local = number1;			                       //depois compara o numero 2 e 3 pra saber qual o maior
else if (number2 > number3)			               //o maior valor é gravado em local
	local = number2;
else 
	local = number3;
DavidUser
if (number1 > number2)
    	   local = number1;
       else
    	   local = number2;
       
       if(local > number3)
    	   System.out.printf("O número maior é: %d", local);
       else
           System.out.printf("O número maior é: %d", number3);

ou

local = number3;
       if (number1 > local)
    	   local = number1;
       if (number2 > local)
    	   local = number2;
       System.out.printf("O número maior é: %d", local);

Método mais eficiente e econômico.

corrigindo seu código, caso o number3 seja o maior e queira imprimi-lo.

DavidUser

O uso de condicional simples várias vezes se torna mais simples e eficiente.

B

Show de bola David, ajudou bastante sua dica!

Criado 22 de dezembro de 2010
Ultima resposta 12 de out. de 2012
Respostas 11
Participantes 5