While(maior numero)?

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.

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

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

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

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”:

[code]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] + " ");
}
}
}[/code]
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.

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

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