Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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:
Code:
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();
}
}
}
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.
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?