Exercício 2.27 - Java Como programar [RESOLVIDO]

6 respostas
monthiel

Olá Pessoal, boa noite!

No livro Java - Como programar, tem o seguinte exercício de memorização:

2.27) Escreva um aplicativo que lê cinco inteiros e determina e imprime qual é o maior e qual é o menor inteiro do grupo. Utilize somente as técnicas de programação aprendido nesse capítulo.

E como já falei antes, sou péssimo em lógica, então, até fiz o aplicativo, mas o resultado não é nada esperado, vejam:

/* Exercício Exercicio227.java
 ** Lê 5 números inteiros e mostra o maior e o menor número
 ** Data: 09/05/2007
 ** Autor: Monthiel
  */
  
  import javax.swing.JOptionPane;
  
  public class Exercicio227 {
  	public static void main (String[] args){
  		String primeiroNumero, //Primeiro número inserido pelo usuário
  		       segundoNumero,  //Segundo número inserido pelo usuário
  		       terceiroNumero, //Terceiro número inserido pelo usuário
  		       quartoNumero,   //Quarto número inserido pelo usuário
  		       quintoNumero,   //Quinto número inserido pelo usuário
  		       numeroGrande,    //Maior número inserido pelo usuário
  		       numeroPequeno;    //Menor número inserido pelo usuário

 	//Iniciliza as variáveis
 	int numero1,
 	    numero2,
 	    numero3,
 	    numero4,
 	    numero5;

/******************************************************************************
       Aqui eu capturo todos os números inseridos pelo usuário da aplicação
******************************************************************************/
  	//lê o primeiro número do usuário como uma String
  		primeiroNumero = 
  			JOptionPane.showInputDialog ("Informe o primeiro número");
  	//lê o segundo número do usuário como uma String
  		segundoNumero = 
  			JOptionPane.showInputDialog ("Informe o segundo número");
  	//lê o terceiro número do usuário como uma String
  		terceiroNumero = 
  			JOptionPane.showInputDialog ("Informe o terceiro número");
  	//lê o quarto número do usuário como uma String
  		quartoNumero = 
  			JOptionPane.showInputDialog ("Informe o quarto número");
  	//lê o quinto número do usuário como uma String
  		quintoNumero = 
  			JOptionPane.showInputDialog ("Informe o quinto número");
/*********************** FIM DA CAPTURA DOS NÚMEROS *****************************/  			
  	
  	//converte os números do tipo String para o tipo Int
  	numero1 = Integer.parseInt (primeiroNumero);
  	numero2 = Integer.parseInt (segundoNumero);
  	numero3 = Integer.parseInt (terceiroNumero);
  	numero4 = Integer.parseInt (quartoNumero);
  	numero5 = Integer.parseInt (quintoNumero);
  	
  	//inicializa as variáveis maiorNumero e menorNumero com String vazio
  	numeroGrande = "";
  	numeroPequeno = "";
  	
/********** Aqui começa os testes de IF para ver quem é maior e menor ************/

	if ( numero1 > numero2 )
		numeroGrande = numeroGrande + numero1;
		numeroPequeno = numeroPequeno + numero2;
	if ( numero2 > numero3 )
		numeroGrande = numeroGrande + numero2;
		numeroPequeno = numeroPequeno + numero3;
	if ( numero3 > numero4 )
		numeroGrande = numeroGrande + numero3;
		numeroPequeno = numeroPequeno + numero4;
	if ( numero4 > numero5 )
		numeroGrande = numeroGrande + numero4;
		numeroPequeno = numeroPequeno + numero5;

	//exibe o resultado
	JOptionPane.showMessageDialog(
	null, "Maior número: " + numeroGrande + "Menor Número" + numeroPequeno, "Resultados",
	JOptionPane.INFORMATION_MESSAGE );
	
	//finaliza o programa
	System.exit( 0 ); 

  	} //fim da do método main
  
  } //fim da classe Exercicio227

Na verdade o problema só está na lógica dos IF's, de como pegar o maior e o menor número. Será se alguém poderia me dar uma luz, do que está errado? pois se eu digitar a sequência 1 2 3 4 5 no final ele só mostra o menor número, e ainda mostra assim 2345 (*risos*)

Obrigado!

Monthiel

6 Respostas

naldoCesar

tente fazer uma comparação; nao sei se estara totalmente certo pois nao testei mas tente isso:

int x=0;
if(numero1>numero2){

int x= numero1;

}else{

int x=numero2;

}

if(x>numero3 ){

x=x;

}else {x=numero3

}

tente essa logica de comparação

depois poste o resultado tbm to curioso pra saber como e que se faz

elomarns

Olá monthiel.

Antes de mais nada, vou te dar uma dica em relação aos exercícos do Java - Como Programar(6ª Edição): só use os recursos já apresentados até o capítulo onde se encontra o exercício. O próprio livro dá este conselho, já que os exercícios têm como objetivo testar o que foi apresentado no capítulo atual, junto com tudo já apresentado nos capítulos anteriores. Acredito que isto pode te ajudar, já que, pelo visto neste exercício, você está com problemas em coisas que o exercício desconsidera, o que te impede de focar nos tópicos do capítulo. Sendo assim, não utilize a classe JOptionPane, já que o exercício que você está fazendo é do capítulo 1, e a classe JOptionPane é introduzida no capítulo 3, use a classe Scanner no lugar dela.

Pelo que eu observei, os seus problemas estão nos tipos de dados. Para armazenar números inteiros, você deve usar um dos seguintes tipos primitivos: byte, short, int ou long. Sendo que você usa um objeto da classe String para armazenar o maior e o menor número, sendo que esta classe representa sequências de caracteres, e não números. Além disso, apesar de o operador + ter sido sobrecarregado para ser utilizado com objetos da classe String, neste caso, ele serve para concatenar as Strings, e não somar possíveis valores númericos que as Strings armazenam. Para corrigir isso, você deve usar váriaveis int para armazenar o maior e o menor número.

Espero que não se importe, mas estou colocando abaixo uma possível solução para este exercício:

import java.util.Scanner;

public class MenorMaior
{
   public static void main(String[] args)
   {
      Scanner entrada = new Scanner(System.in);

      System.out.print("Digite o primeiro numero inteiro: ");
      int numero1 = entrada.nextInt();

      int maiorNumero = numero1;
      int menorNumero = numero1;

      System.out.print("Digite o segundo numero inteiro: ");
      int numero2 = entrada.nextInt();

      if(numero2 > maiorNumero)
         maiorNumero = numero2;
      if(numero2 < menorNumero)
         menorNumero = numero2;

      System.out.print("Digite o terceiro numero inteiro: ");
      int numero3 = entrada.nextInt();

      if(numero3 > maiorNumero)
         maiorNumero = numero3;
      if(numero3 < menorNumero)
         menorNumero = numero3;

      System.out.print("Digite o quarto numero inteiro: ");
      int numero4 = entrada.nextInt();

      if(numero4 > maiorNumero)
         maiorNumero = numero4;
      if(numero4 < menorNumero)
         menorNumero = numero4;

      System.out.print("Digite o quinto numero inteiro: ");
      int numero5 = entrada.nextInt();

      if(numero5 > maiorNumero)
         maiorNumero = numero5;
      if(numero5 < menorNumero)
         menorNumero = numero5;

      System.out.printf("\nMenor numero: %d.\n", menorNumero);
      System.out.printf("Maior numero: %d.\n", maiorNumero);
   }
}

De qualquer forma, caso queira continuar utilizando a classe JOptionPane e outros recursos ainda não apresentados no capítulo em que você se encontra, neste caso, basta você utilizar váriaveis int para armazenar o menor e o menor número, assumir que o primeiro número é o menor e o maior digitado até o momento, e testar a cada número inserido se ela é menor que o menor número e se é maior do que o maior número.

monthiel

Então,

Eu estou usando só os recursos passados no livro, capítulo I. O problema é que estou no Java - Como programar - Terceira Edição, e não a sexta como comentado.

Na verdade não entendi bem o seu exemplo, pois como estou começando, e você usou objetos que ainda não vi, me perdi totalmente.

No primeiro capítulo ele apresenta a classe JOptionPane, mas o problema não está nele, e sim na lógica dos IF’s para comparação, estou fazendo alguma besteira que está mostrando os números totalmente desordenados… rsrs

E outra, não sei porque não funciona colocando assim:

if (numero1 > numero2)
numeroGrande = numero1

Isso daí da erro de compilação, não sei porque.

Abraços e obrigado pelo auxilio, mas se puder me quebrar essa, agradeço.

Att,

naldoCesar

import java.util.Scanner;

public class TesteGuj {

public static void main(String[] args) {

	// essa ea entrada dos dados via Scanner
	Scanner in = new Scanner(System.in);
	System.out.println("digite o primeiro numero ");
	int a = in.nextInt();
	System.out.println("digite o segundonumero ");
	int b = in.nextInt();
	System.out.println("digite o terceiro numero ");
	int c = in.nextInt();
	System.out.println("digite o quarto numero ");
	int d = in.nextInt();
	System.out.println("digite o quinto numero ");
	int e = in.nextInt();

	int t;
	int t1;
	int t2;
	int t3;
	// abaixo faço a logica dos if
	if (a > b) {
		t = a;

	} else {
		t = b;
	}
	if (t > c) {
		t1 = t;
	} else {
		t1 = c;
	}
	if (t1 > d) {
		t2 = t1;
	} else {
		t2 = d;
	}
	if (t2 > e) {
		t3 = t2;
	} else {
		t3 = e;
	}
	
	System.out.println("o maior e "+ t3);	}

}

no meu caso funcionou legal mas olha a logica dos ifs esta meio confusa mas esta legal

monthiel

Obrigado amigo elomarns,
Seguindo sua lógica, consegui resolver, veja:

/* Exercício Exercicio227.java
 ** Lê 5 números inteiros e mostra o maior e o menor número
 ** Data: 09/05/2007
 ** Autor: Monthiel
  */
  
  import javax.swing.JOptionPane;
  
  public class Exercicio227 {
  	public static void main (String[] args){
  		String primeiroNumero, //Primeiro número inserido pelo usuário
  		       segundoNumero,  //Segundo número inserido pelo usuário
  		       terceiroNumero, //Terceiro número inserido pelo usuário
  		       quartoNumero,   //Quarto número inserido pelo usuário
  		       quintoNumero;   //Quinto número inserido pelo usuário

 	//Iniciliza as variáveis
 	int numero1,
 	    numero2,
 	    numero3,
 	    numero4,
 	    numero5;

/******************************************************************************
       Aqui eu capturo todos os números inseridos pelo usuário da aplicação
******************************************************************************/
  	//lê o primeiro número do usuário como uma String
  		primeiroNumero = 
  			JOptionPane.showInputDialog ("Informe o primeiro número");
  	//lê o segundo número do usuário como uma String
  		segundoNumero = 
  			JOptionPane.showInputDialog ("Informe o segundo número");
  	//lê o terceiro número do usuário como uma String
  		terceiroNumero = 
  			JOptionPane.showInputDialog ("Informe o terceiro número");
  	//lê o quarto número do usuário como uma String
  		quartoNumero = 
  			JOptionPane.showInputDialog ("Informe o quarto número");
  	//lê o quinto número do usuário como uma String
  		quintoNumero = 
  			JOptionPane.showInputDialog ("Informe o quinto número");
/*********************** FIM DA CAPTURA DOS NÚMEROS *****************************/  			
  	
  	//converte os números do tipo String para o tipo Int
  	numero1 = Integer.parseInt (primeiroNumero);
  	numero2 = Integer.parseInt (segundoNumero);
  	numero3 = Integer.parseInt (terceiroNumero);
  	numero4 = Integer.parseInt (quartoNumero);
  	numero5 = Integer.parseInt (quintoNumero);
  	
  	//inicializa as variáveis maiorNumero e menorNumero com String vazio
  	int numeroGrande = numero1;
  	int numeroPequeno = numero1;
  	
/********** Aqui começa os testes de IF para ver quem é maior e menor ************/

	if ( numero2 > numeroGrande )
		numeroGrande = numero2;
	if ( numero2 < numeroPequeno )
		numeroPequeno = numero2;
	if ( numero3 > numeroGrande )
		numeroGrande = numero3;
	if ( numero3 < numeroPequeno )
		numeroPequeno = numero3;
	if ( numero4 > numeroGrande )
		numeroGrande = numero4;
	if ( numero4 < numeroPequeno )
		numeroPequeno = numero4;
	if ( numero5 > numeroGrande )
		numeroGrande = numero5;
	if ( numero5 < numeroPequeno )
		numeroPequeno = numero5;				


	//exibe o resultado
	JOptionPane.showMessageDialog(
	null, "\nMaior número: " + numeroGrande + "\nMenor Número: " + numeroPequeno, "Resultados",
	JOptionPane.INFORMATION_MESSAGE );
	
	//finaliza o programa
	System.exit( 0 ); 

  	} //fim da do método main
  
  } //fim da classe Exercicio227

Agora está funcionando perfeitamente. Obrigado a todos!

Em breve postarei outros… rsrs

Att,
Monthiel

K

Sei que o tópico é antigo, mas ta ai a minha contribuição.
Comprei agora o Java como Programar 6edição.

Fiz desse jeito e deu certo.
import java.util.Scanner;

public class comparacao {

public static void main( String args [] ){
	
	Scanner input = new Scanner( System.in );
	
	int n1, n2, n3, n4, n5;
	int x, y, z, w, a, b, c, d;
	
	
	System.out.println("Entre com o primeiro número: ");
	n1 = input.nextInt();
	
	System.out.println("Entre com o segundo número: ");
	n2 = input.nextInt();
	
	System.out.println("Entre com o terceiro número: ");
	n3 = input.nextInt();
	
	System.out.println("Entre com o quarto número: ");
	n4 = input.nextInt();
	
	System.out.println("Entre com o quinto número: ");
	n5 = input.nextInt();
	
	
	if(n1 > n2)
		x = n1;
	else 
	    x = n2;
		if(n1 < n2)
			a = n1;
		else
			a = n2;
			
	 		
	if(x > n3)
		y = x;
	else	
		y = n3;
		if(a < n3)
			b = a;
		else
			b = n3;
	
		
	if(y > n4)
		z = y;
	else
		z = n4;
		if(b < n4)
			c = b;
		else
			c = n4;
		
		
	if(z > n5)
		w = z;
	else
		w = n5;
		if(c < n5)
			d = c;
		else
			d = n5;
			
	System.out.printf("O maior é: %d ", w);
	System.out.printf("O menor é: %d ", d);
	
}

}

Criado 10 de maio de 2007
Ultima resposta 5 de jul. de 2008
Respostas 6
Participantes 4