Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

progster

[Resolvido] Iniciante Java Maior

Mensagens Recomendadas

progster

Boa noite,

No seguinte programa:

- Se os 3 valores forem iguais o programa para;

- Sem o while, a comparação de valores funciona bem.

O problema é que com o while durante a comparação de valores entra em loop, e se sair do programa durante a sua execução continua a dar o valor correto.

package maior;
public class Maior {
  public static void main(String[] args)
   {
  int maior,a,b,c;

  System.out.print("Introduza o valor de a");
  a=Le.umIt();
  System.out.print("Introduza o valor de b");
  b=Le.umIt();
  System.out.print("Introduza o valor de c");
  c=Le.umIt();

  while ((a!=b) && (a!=c) && (b!=c))
  {
	 if ((a>b) && (a>c))
	 {		 
	    maior=a;
	    System.out.print("A é o maior.");
	 }
	 else	 
	 {
		 if (b>c)
		  {			
		    maior=b;
		    System.out.print("B é o maior.");
		  }		 
	    else
		  {
		    maior=c;
		    System.out.print("C é o maior.");
		  }
	  }	
  }
   }
}

Está-me a escapar qualquer coisa, mas não estou a conseguir encontrar.

Agradeço desde já qualquer ajuda que me possam dar.


Não resolvo dúvidas por PM.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

se os três valores forem diferentes entre si, então entras no ciclo.

agora diz-me o que faz sair do ciclo ?

ps : isto para não dizer que o ciclo nem sequer deveria existir ...

Editado por HappyHippyHippo
  • Voto 1

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
progster

Como assim o ciclo não deveria de existir?

Edit: Já descobri o que faltava. Era o break; no if.

Editado por progster

Não resolvo dúvidas por PM.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

while ((a!=b) && (a!=c) && (b!=c))
// enquando
//     (a!=b)
//   e (a!=c)
//   e (b!=c)
{
// então faz ...
}

se entras dentro do ciclo, o que faz a aplicação sair dele ?


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

agora experimenta isto:

package maior;
public class Maior {

 public static void main(String[] args)
 {
   int maior,a,b,c;

   System.out.print("Introduza o valor de a");
   a=Le.umIt();
   System.out.print("Introduza o valor de b");
   b=Le.umIt();
   System.out.print("Introduza o valor de c");
   c=Le.umIt();

//  while ((a!=b) && (a!=c) && (b!=c))
//  {
     if ((a>b) && (a>c))
     {               
//      maior=a;
       System.out.print("A é o maior.");
     }
     else    
     {
       if (b>c)
       {                     
//        maior=b;
         System.out.print("B é o maior.");
       }              
       else
       {
//        maior=c;
         System.out.print("C é o maior.");
       }
     }     
//  }
 }
}


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
progster

Com esse código, a comparação de valores funciona, mas para os 3 valores iguais diz-me que o valor c, é o maior.


Não resolvo dúvidas por PM.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

então e assim :

package maior;
public class Maior {

 public static void main(String[] args)
 {
   int maior,a,b,c;

   System.out.print("Introduza o valor de a");
   a=Le.umIt();
   System.out.print("Introduza o valor de b");
   b=Le.umIt();
   System.out.print("Introduza o valor de c");
   c=Le.umIt();

//  while ((a!=b) && (a!=c) && (b!=c))
//  {
     if ((a>b) && (a>c))
     {               
//      maior=a;
       System.out.print("A é o maior.");
     }
     else    
     {
       if (b>c)
       {                     
//        maior=b;
         System.out.print("B é o maior.");
       }              
       else if (c>b) // <-----------------------------
       {
//        maior=c;
         System.out.print("C é o maior.");
       }
     }     
//  }
 }
}

Editado por HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
progster

Funciona a comparação de valores.

Funciona a hipótese de os 3 valores serem iguais.

Realmente assim o código está mais "limpo". Já percebi ao que te referias quando disseste que o ciclo não deveria de existir.

Obrigado pela ajuda e pelo esclarecimento.


Não resolvo dúvidas por PM.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.