Maior array

Olá Pessoal!!!
Como que eu faço para selecionar em um array de inteiros o maior número.
Tipo tenho na posição array[0] = 123 na posição array[1] = 53, array[2] = 100
etc… E desse array tirar o numero de maior valor.

Você pode ir percorrendo o array em um loop e comparando se o número que tem na mão é maior que o número na posição que está. Se for maior, você atualiza o teu número e vai continuando até o final.

Você pode utilizar o metodo static “sort” da classe Arrays.

Uma de suas assinaturas é “sort(T[] a, Comparator<? super T> c)”, então é só criar uma classe que implementa a interface Comparator

Segue abaixo um modelo para análise

public class Principal {

	public static void main(String[] args) {
		
		class OrdenarDesc implements Comparator<Integer> {
			public int compare(Integer o1, Integer o2) {
				if (o1.compareTo(o2) == - 1)
					return 1;
				else if (o1.compareTo(o2) == 1)
					return - 1;
				return 0;
			}
		}
		
		Integer[] num = {45, 32, 58, 92, 108, 42};
		Arrays.sort(num, new OrdenarDesc());
		for (int x: num)
			System.out.println(x);
	}
}

Qualquer dúvida só postar novamente

Att.

Astork

PS:

para facilitar o código

Essse método.

public int compare(Integer o1, Integer o2) {   
                if (o1.compareTo(o2) == - 1)   
                    return 1;   
                else if (o1.compareTo(o2) == 1)   
                    return - 1;   
                return 0;   
            }   

Pode ser descrito assim:

public int compare(Integer o1, Integer o2) {   
               return ((int) o1) - ((int)o2);    
            }   

Ou:

public int compare(Integer o1, Integer o2) {   
               return o1.compareTo(o2);
            }   
public class Main
{
   public static void main(String[] args)
   {
      int[] array =
      {
         1, 4, 36, 81, 64, 9, 16, 100, 25, 49, 64
      };
      int maior = 0;

      for (int i = 0; i < array.length; i++)
         if (array[i] > maior)
            maior = array[i];

      System.out.println("O maior é " + maior);
   }
}

[quote]Pode ser descrito assim:

view plaincopy to clipboardprint?
public int compare(Integer o1, Integer o2) {
return ((int) o1) - ((int)o2);
}
public int compare(Integer o1, Integer o2) {
return ((int) o1) - ((int)o2);
}

Ou:
view plaincopy to clipboardprint?
public int compare(Integer o1, Integer o2) {
return o1.compareTo(o2);
}
[/quote]

Realmente o código pode ser escrito desta forma… mas da maneira que colocou ai, ele está ordenando crescente… e o tópico quer decrescente…
então tem que mudar a ordem dos parametros o1 e o2

Ficando assim

public int compare(Integer o1, Integer o2) {
            return o2.compareTo(o1);      
}

ou 

public int compare(Integer o1, Integer o2) {
	return ((int) o2) - ((int)o1);    
}

Agora o interessante de todas estas respostas é que o Usuario shadown entenda o que está acontecendo…

Pois foi criado inumeras soluções, desde uma lógica como o "Bruno Laturner " citou, os modelos que fiz… um deles sendo implementado como se não tivesse o compareTo, e as melhorias propostas.

Att.

Astork

Sim… mas o problema não é esse…

é que já vi em outros códigos pessoas que fizeram como voce colocou no seu exemplo… e em listas com muitos resultados essa comparação com if pode ser prejudicial a performance.
Não tanto assim, mas se existe uma outra solução, por que não usar?

Acho que esse é o jeito mais simples e mais fácil de se compreender:

[code]import javax.swing.JOptionPane;

public class MaiorNumero {

public static void main(String args[]) {
    
    int numeros[] = new int[10];
    int max=0;
    
    JOptionPane.showMessageDialog(null, "Insira 10 números INTEIROS!");
    
    try{
       for(int i = 0; i < numeros.length; i++) {
           numeros[i] = Integer.parseInt(JOptionPane.showInputDialog("Numero" + (i+1) + ":"));
           if (max < numeros[i])
               max = numeros[i];       
       }             
    }catch(Exception e) {            
        JOptionPane.showMessageDialog(null, "Numero Inválido!!!");
        System.exit(0);
    }
    
    JOptionPane.showMessageDialog(null, "O maior número digitado foi " + max);
    
    
}

}[/code]

Onde numeros[i] é o seu Array e max é variável que vai armazenar o valor…voce usa a estrutura de repetição pra passar por cada elemento do seu Array e verificar se max é maior que a posição do Array.Se a posição do Array for maior, max armazena este valor.Depois é só imprimir ^^

Mas desta maneira não estamos reutilizando o que java já dispoe para nos… !!! no caso o metodo “sort(T[] a, Comparator<? super T> c)”

Ae galera vlw consegui

Mas desta maneira não estamos reutilizando o que java já dispoe para nos… !!! no caso o metodo “sort(T[] a, Comparator<? super T> c)”

[/quote]

Se for pra utilizar o que o Java disponibiliza, use o método max do Collections:

import java.util.Arrays;
import java.util.Collections;

public class Main
{
   public static void main(String[] args)
   {
      Integer[] array =
      {
         1, 4, 36, 81, 64, 9, 16, 100, 25, 49, 64
      };

      int maior = Collections.max(Arrays.asList(array));

      System.out.println("O maior é " + maior);
   }
}