While(maior numero)?

7 respostas
G

Fiz este codigo, mas esta dando errado digitei 4 e só apareceu 0.

exemplo

>36
>23
>10
>1

Resposta 0

O correto seria:

maior numero encontrado foi 36. Mas nao da certo…
import javax.swing.JOptionPane.*;

public class Maior_num

{

public static void main(String args[])

{

String a;

int aux,maior,num,cont;

cont = 1;
while(cont<=4)
 	 {
 	 a = javax.swing.JOptionPane.showInputDialog("Digite 4 numeros : ");
 	 num = Integer.parseInt(a);
 	 maior = 0;
 	 aux = 0; 
 	  if(num>maior)
 	  {
 	    num = aux;
 	    aux = maior;
 	  }	
 	 cont++;
 	 }
 System.out.println("O maior numero lido e: " + maior);
 System.exit(0);
 }

}

Digam onde está o erro?
grato.

7 Respostas

J

Você só está atribuindo um valor à variável maior nessa linha:
maior = 0;

Depois não atribui em nenhum lugar. Por isso dá sempre zero.

Ah, por favor, use a tag CODE. Nos seus códigos.

O

O Problema é que maior não recebe nenhum valor diferente de zero

public class oi
{ 
public static void main(String args[]) 
{ 
String a; 

int num;
int cont;
int maior = 0; 
cont = 1; 

while(cont<=4) 
{ 
a = javax.swing.JOptionPane.showInputDialog("Digite 4 numeros : "); 
num = Integer.parseInt(a); 
 
 
if(num>maior) 
{ 
maior = num; 
 
} 
cont++; 
} 
System.out.println("O maior numero lido e: " + maior); 
System.exit(0); 
} 
}

tenta assim o aux nao é necessario

G

E se pedisse com dois numeros maiores?
Como faria?
baseando-se no codigo acima.
grato.

O

Faz dois if{} aninhados testando o maior e o segundo maior numero armazenado

J

O aux você usa quando for ordenar uma sequência de números. Mas aí você tem que usar um array.

Para obter os n maiores números ordena os números em um array e pega o últimos n números (se você ordenou em ordem crescente).

Um exemplo de "ordenador":
class Exemplo0804
{
 public static void main (String args[]) 
 {
   int N[]=new int[10]; //cria um array com 10 elementos
   for (int i=0;i<10;i++)
   {  // armazena os argumentos no array
      System.out.println("Digite o numero " + (i+1));
      N[i]=Diversos.leNumeroInt(0,1000);
      if (N[i]==-1) // foi digitado um numero invalido
         i--;  // retorna o indice;  
   }
   N=ordenaArrayInt(N); //ordena o array
   System.out.println("Em ordem crescente: ");
   mostraArray(N); //mostra o array
 }

 public static int[] ordenaArrayInt(int arr[])
 {
   int x,y,aux;    	 
   for(x=0;x<arr.length;x++) 
    for (y=0;y<arr.length;y++)
       {
       if(arr[x]<arr[y])
        {
        aux=arr[y];
        arr[y]=arr[x];
        arr[x]=aux;
        }
       }   
    return arr;
  }

 public static void mostraArray(int arr[])
 {
    for(int i=0;i<arr.length;i++)//mostrando o array ordenado
    {
     System.out.print(arr[i] + " ");
    }
 }
}
fonte: Java 2 Ensino Didático - Sérgio Furgeri

obs.: estou apenas usando o exemplo e citando a fonte, não estou recomendando o livro.

J

observações:

dê preferência a usar length nos seus “for”, como em:
x<arr.length
Se você mudar o tamanho do array não precisa ficar se preocupando em alterar cada “for” para o novo tamanho.

Diferenças entre length e length():
length é uma variável que todo array tem indicando o número de elementos do array
length() é um método da classe String que retorna o tamanho da string

J

Ah, a classe Diversos, caso queira usar esse modelo, tem aqui:
http://www.milenio.com.br/griphus/javadrops/j2didat/diversos.htm

Criado 28 de julho de 2005
Ultima resposta 29 de jul. de 2005
Respostas 7
Participantes 3