Dúvida com exercício Simples (IF)

11 respostas
OneSr

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:

11 Respostas

Andre_Rosa

É 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.

OneSr

Andre Rosa:
É 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” ?

Henio
Seguindo a linha de raciocínio do Andre Rosa. Uma solução pra quando você tentar o mínimo a variável de menor valor não ficar em 0:
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.

OneSr

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
     */
    }
    
}
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.

OneSr

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.

lina
OneSr:
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!

OneSr

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:

Henio

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.

lina

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!

OneSr

Agradeço a todos a participação no tópico, foi de grande ajuda o conhecimento de todos para sanar minha dúvida :slight_smile:

Criado 13 de junho de 2011
Ultima resposta 14 de jun. de 2011
Respostas 11
Participantes 4