Jump to content
progster

[Resolvido] Iniciante Java Maior

Recommended Posts

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.

Share this post


Link to post
Share on other 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 ...

Edited by HappyHippyHippo
  • Vote 1

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

Share this post


Link to post
Share on other sites
progster

Como assim o ciclo não deveria de existir?

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

Edited by progster

Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites
progster

Parece que adivinhei. Estava a editar o post, quando respondeste ao mesmo tempo. :)


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.");
       }
     }     
//  }
 }
}

Edited by HappyHippyHippo

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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.