# Größte zahl aus array ermitteln



## Ocean-Driver (14. Mrz 2007)

Hi,

Îch habe ein Programm geschrieben,was:

Fragt wieviel Werte mein einlesen will. In einer Funktion lese ich die werte dann ein.

Jetzt möchte ich von diesen Werten die eingelesen werden die größste ermitteln.
Eine If-schleife fällt ja schonmal flach, will so ne überprüfung nciht schreiben wenn 1mill werte eingegeben werten. 

Was sollte ich mir angucken, damit ich das ganze realisieren kann?

Mein Programm sieht zur zeit so aus:


```
package werteEingabe;
import java.util.*;
public class Einlesen {

	
	public static void main(String[] args) throws Exception{
		
		Scanner s = new Scanner(System.in);
		
		int anzwerte;
		
		System.out.println("Wieviele Werte wollen Sie eingeben?");
		anzwerte = s.nextInt();
		
		long[] werte = new long[anzwerte];
		
		
		werteeinlesen(anzwerte,werte);

	}

	
	public static void werteeinlesen (int anzahlwerte, long[] werte) throws Exception
	{
		Scanner s = new Scanner(System.in);
		
		for (int i=0;i<werte.length;i++)
		{
			int iausgabe = i+1;
			System.out.println("Bitte Wert "+iausgabe+". eingeben:");
			werte[i] = s.nextLong();
		}
		
	}
}
```

Inner Sufu hab ich leider nichts gefunden. 

Danke schonmal

mfg ocean-driver


----------



## SlaterB (14. Mrz 2007)

was ist eine  If-schleife ?

sortiere das Array mit Arrays.sort und nimm den ersten oder letzten Wert


----------



## Ocean-Driver (14. Mrz 2007)

Sry mein natürlich ne if abfrage ^^
thx werd ich mal probieren


----------



## user0001 (14. Mrz 2007)

Eine Alternative funktioniert über eine temporäre Variable, in der du den jeweils höchsten Wert speicherst. Dann gehst du einfach das Array durch und vergleichst den aktuellen "Array-Wert" mit dem Wert aus der temp-Variablen.

mfg

user0001


----------



## Ocean-Driver (14. Mrz 2007)

Hi,

Ich hab es jetzt wie folgt programmiert:


```
package werteEingabe;
import java.util.*;
public class Einlesen {

	
	public static void main(String[] args) throws Exception{
		
		Scanner s = new Scanner(System.in);
		
		int anzwerte;
		
		System.out.println("Wieviele Werte wollen Sie eingeben?");
		anzwerte = s.nextInt();
		
		long[] werte = new long[anzwerte];
		
		
		werteeinlesen(anzwerte,werte);
		
		groesterwert(werte);

	}

	
	public static long[] werteeinlesen (int anzahlwerte, long[] werteeinlesen) throws Exception
	{
		Scanner s = new Scanner(System.in);
		
		for (int i=0;i<werteeinlesen.length;i++)
		{
			int iausgabe = i+1;
			System.out.println("Bitte Wert "+iausgabe+". eingeben:");
			werteeinlesen[i] = s.nextLong();
		}
		
		return werteeinlesen;
		
	}
	
	public static void groesterwert (long[] GSTWerte) throws Exception
	{
		Arrays.sort(GSTWerte);
		System.out.println("Gröste Zahl" +GSTWerte[GSTWerte.length]);
	}
}
```

Nun erhalte ich folgenden Fehler:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
	at werteEingabe.Einlesen.groesterwert(Einlesen.java:43)
	at werteEingabe.Einlesen.main(Einlesen.java:20)


Allerdings finde ich fehler einfach garnicht, eben gings dann wollte ich nen long draus machen und nun gehts nicht mehr, ist bestimmt irgendwas triviales, aber vieleicht seht ihr ja mehr?


----------



## WieselAc (14. Mrz 2007)

Ich würde mal behaupten 



```
GSTWerte[GSTWerte.length-1]
```

 sollte dein Problem beheben.


----------



## Ocean-Driver (14. Mrz 2007)

Dankeschön 
Supi funktioniert jetzt


----------

