Galera boa noite, eu estive afastado da programação por um tempo, mas agora estou de volta totalmente, e estou com o livro “Java - Como programar 8° Ed.”, e logo no começo em um execício me é solicitado que eu crie um aplicativo que receba do usuário 5 inteiros, e o mesmo deve descobrir o maior e o menor inteiro deste grupo. Mas ele exige que seja utilizado somente conhecimentos transparecidos pelo livro até a página atual, eis meu problema que talvez seja bem simples, ele quer que eu faça este aplicativo somente utilizando “IF’s”. Eu poderia sem problemas criar um aplicativo com “IF’s” aninhados ou “IF ELSE” oi ainda com “&&”, mas estou tendo dificuldades para realizar está atividade apenas com “IF’s” sequênciais, o problema certamente é de lógica, alguém poderia dar uma ajuda em relação a este problema, grato :roll:
Dúvida com exercício Simples (IF)
11 Respostas
É só ter uma variável responsável por armazenar o maior valor. Daí, você atribui um desses 5 inteiros a variável como maior, e depois vai comparando:
if (inteiroUm > maiorValor) {
maiorValor = inteiroUm;
}
por exemplo.
É só ter uma variável responsável por armazenar o maior valor. Daí, você atribui um desses 5 inteiros a variável como maior, e depois vai comparando:
if (inteiroUm > maiorValor) { maiorValor = inteiroUm; }por exemplo.
André, boa noite. Como você disse realmente funciona, e como eu esperava era um problema de lógica, mas para eu saber o menor valor, seria como sua variável que que recebe o maior valor “maiorValor”, mas está variável no aplicativo é inicializada com valor igual à “0”, mas no caso do menor valor, se ele for iniciada em “0” sempre será “0” no resultado final, para corrigir este problema eu simplismente poderia logo após a inserção do “primeiro” número inteiro, já atribuí-lo à variável “smaller” para comparação posterior, seria incorreto fazer este “desvio” ?
if (inteiroUm > inteiroDois) { // compara os primeiros dois valores
maiorValor = inteiroUm;
}
if (inteiroDois > maiorValor) { // pro caso de inteiroUm ser menor que inteiroDois
maiorValor = inteiroDois;
}
if (inteiroTres > maiorValor) { // compara o maior valor atual com inteiroTres
maiorValor = inteiroTres;
}
if (inteiroQuatro > maiorValor) { // compara o maior valor atual com inteiroQuatro
maiorValor = inteiroQuatro;
}
if (inteiroCinco > maiorValor) { // compara o maior valor atual com inteiroCinco
maiorValor = inteiroCinco;
}
No final maiorValor conterá o maior valor, pra fazer o minimo é só seguir a mesma linha de raciocínio.
Olá Henio, desculpe creio que você não entendeu minha colocação, abaixo segue meu código, eu gostaria de saber se é incorreto o desvio que fui obrigado a utilizar para fazer com que o valor da variável “smaller” não fosse “0”, como em sua raiz inicial. Abaixo segue o código que fiz, e que está funcionando, minha dúvida realmente é se haveria outra possibilidade de fazer a variável “smaller” perder seu valor “0” sem definir em sua raiz um valor fixo que poderia causar problemas na lógica do aplicativo. Grato à todos pela ajuda :roll:
/*
* Programa com a finalidade de ler cinco inteiros e definir o maior e o menor deste grupo
*/
package exercicios;
import java.util.Scanner;// Classe utiliza Objetos Scanner
public class LerCincoInteirosMaiorMenor {
public static void main(String[] args)
{
// Objeto input do tipo Scanner
Scanner input = new Scanner(System.in);
int number1,// Primeiro número a ser digitado pelo usuário
number2,// Segundo número a ser digitado pelo usuário
number3,// Terceiro número a ser digitado pelo usuário
number4,// Quarto número a ser digitado pelo usuário
number5,// Quinto número a ser digitado pelo usuário
higher = 0,// Armazena o maior do grupo
smaller = 0;// Armazena o menor do grupo
System.out.print("Enter first number integer: ");// Prompt
number1 = input.nextInt();
smaller = number1;
System.out.print("Enter second number integer: ");// Prompt
number2 = input.nextInt();
System.out.print("Enter third number integer: ");// Prompt
number3 = input.nextInt();
System.out.print("Enter quart number integer: ");// Prompt
number4 = input.nextInt();
System.out.print("Enter fifth number integer: ");// Prompt
number5 = input.nextInt();
/*
* ESTRUTURA PARA O MAIOR
*/
//Estrutura IF (Se maior)
if(number1 > higher)
higher = number1;
if(number2 > higher)
higher = number2;
if(number3 > higher)
higher = number3;
if(number4 > higher)
higher = number4;
if(number5 > higher)
higher = number5;
System.out.printf("\"%d\" is higher.\n", higher);
/*
* FIM ESTRUTURA PARA O MAIOR
*/
/*
* ESTRUTURA PARA O MENOR
*/
//Estrutura IF (Se menor)
if(number1 < smaller)
smaller = number1;
if(number2 < smaller)
smaller = number2;
if(number3 < smaller)
smaller = number3;
if(number4 < smaller)
smaller = number4;
if(number5 < smaller)
smaller = number5;
System.out.printf("\"%d\" is smaller.\n", smaller);
/*
* FIM ESTRUTURA PARA O MENOR
*/
}
}
Acho que entendi agora.
Cara to meio com pressa por que está tarde aqui…
Mas a ideia seria o seguinte, tentar fazer os ifs com mais de uma condição, no caso seria a condição de ser maior que zero.
Mais tarde depois que eu dormir vou tentar aplicar a ideia.
Acho que entendi agora.
Cara to meio com pressa por que está tarde aqui…Mas a ideia seria o seguinte, tentar fazer os ifs com mais de uma condição, no caso seria a condição de ser maior que zero.
Mais tarde depois que eu dormir vou tentar aplicar a ideia.
Olá Henio bom dia, entendi sua colocação, mas este é o problema, segundo o livro é para utilizar apenas “1” “IF” se a idéia fosse utilizar mais de uma condição dentro do “IF” seria fácil resolver este problema. Grato Henio.
Acho que entendi agora. Cara to meio com pressa por que está tarde aqui...Mas a ideia seria o seguinte, tentar fazer os ifs com mais de uma condição, no caso seria a condição de ser maior que zero.
Mais tarde depois que eu dormir vou tentar aplicar a ideia.
Olá Henio bom dia, entendi sua colocação, mas este é o problema, segundo o livro é para utilizar apenas "1" "IF" se a idéia fosse utilizar mais de uma condição dentro do "IF" seria fácil resolver este problema. Grato Henio.
Oi,
Algo do tipo:
/*
* Programa com a finalidade de ler cinco inteiros e definir o maior e o menor deste grupo
*/
package exercicios;
import java.util.Scanner;// Classe utiliza Objetos Scanner
public class LerCincoInteirosMaiorMenor {
public static void main(String[] args)
{
// Objeto input do tipo Scanner
Scanner input = new Scanner(System.in);
int[] valores = new int[5];
System.out.print("Enter first number integer: ");// Prompt
valores[0] = input.nextInt();
System.out.print("Enter second number integer: ");// Prompt
valores[1] = input.nextInt();
System.out.print("Enter third number integer: ");// Prompt
valores[2] = input.nextInt();
System.out.print("Enter quart number integer: ");// Prompt
valores[3] = input.nextInt();
System.out.print("Enter fifth number integer: ");// Prompt
valores[4] = input.nextInt();
/*
* ESTRUTURA PARA O MAIOR
*/
int max = valores[0];
for(int i = 1; i < valores.length; i++){
if(valores[i] > max){
max = valores[i];
}
}
System.out.printf("\"%d\" is higher.\n", max);
/*
* FIM ESTRUTURA PARA O MAIOR
*/
/*
* ESTRUTURA PARA O MENOR
*/
int smaller = valores[0];
for(int i = 1; i < valores.length; i++){
if(valores[i] < smaller){
smaller = valores[i];
}
}
System.out.printf("\"%d\" is smaller.\n", smaller);
/*
* FIM ESTRUTURA PARA O MENOR
*/
}
}
Não sei se funciona... rs
Tchauzin!
Lina, obrigado pela resposta, mais você talvez não tenha lido minha primeira mensagem, todo o aplicativo segundo o livro, deve ser construído com os ensinamentos postos até então. Essa sua maneira de criar o aplicativo com vetores é uma ótima saída, se de fato o exercício não pedisse que fosse resolvido apenas com “IF’s”. O meu último código está perfeito, a minha dúvida é realmente em referência ao desvio que utilizei para fazer com que a variável “smaller” perdesse seu valor inicial “0”, apenas gostaria de saber se isso não se enquadra em uma boa prática de programação. Grato pela sua atenção :oops:
Cara, acho que não tem nada de errado no teu código não.
Você atingiu a solução do problema. Não consigo ver outra forma de resolver sem atribuir um dos valores a smaller.
E também não se preocupe, esse tipo de exercício é pra forçar tua mente e te ajudar a fixar o conteúdo. Na prática você nunca fará um código assim, você poderá usar tudo o que sabe.
Oi,
Desculpe… realmente não li direito! Minha cabeça está doendo hj…
Bom, acredito estar correto… mais eu iniciaria ela com o valor de higher. Eu acho…
Tchauzin!
Agradeço a todos a participação no tópico, foi de grande ajuda o conhecimento de todos para sanar minha dúvida 