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:
[code]//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 =
}
}
[/code]
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 ?
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
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;
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
//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.
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
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;
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.