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.
DatentypenWerte in einen Array einlesen und danach die beiden höchsten Werte wieder ausgeben
Hey Leute!! Ich hoffe das Thema gibt es noch nicht,aber ich hab folgendes Problem. Und zwar möchte ich durch die Tastatur Werte für einen Array einlesen und auch die größe des Arrays per Tastatur dynamisch festlegen. Danach soll mir das Programm die beiden höchsten Werte ausgeben. An letzterem scheitere ich im moment und wollt mal fragen ob mir einer helfen kann. Hier schon mal das was ich bisher gemacht habe. Zur Info noch, die Bibliothek GraphicIO dient nur zur Fenster erzeugung und zum Einlesen von der Tastatur.
Java:
public class Aufgabe3b{
public static void main(String[] args) {
int a = GraphicIO.readInteger("Feldlänge eingeben: ");
int[] feld = new int[a];
for(int i=0; i < feld.length; i++){
feld[i]= GraphicIO.readInteger("Zahl ");
}
if (a>0){
int max1=feld[0];
int max2=feld[0];
for(int i=1;i < feld.length;i++){
if(feld[i]>max1 ){
max1=feld[i];
if (feld[i]> max2 ){
max2=feld[i];
}
}
}
GraphicIO.print("Maximum 1: "+max1);
GraphicIO.print("Maximum 2: "+max2);
}
}
}
Musst du es unbedingt selber rausfinden?
Kannst es ja auch bequemer machen, vor allem wenn du später z.B. 3.-Größte brauchst. Ab Zeile 7:
[JAVA=8]
Arrays.sort(feld);
int max1 = (feld.length>0)?feld[feld.length-1]:Integer.MIN_VALUE;
int max2 = (feld.length>1)?feld[feld.length-2]:Integer.MIN_VALUE;
GraphicIO.print("Maximum 1: "+max1);
GraphicIO.print("Maximum 2: "+max2);
[/code]
Ansonsten musst du die Logik ein wenig überdenken. Im Moment änderst du ja die beiden Werte immer gleichzeitig.
Code:
- am Anfang bekommt max1 den 1. Wert des Array, max2 - den 2.
- Du tauschst ggf die Werte so, dass in max1 den größeren Wert hat.
- Eine Schleife geht alle Werte durch:
- - wenn feld[i]>=max1 ist, dann:
- - - max2 wird der Wert von max1 zugewiesen
- - - max1 wird der Wert von feld[i] zugewiesen
- - wenn nicht:
- - - wenn feld[i]>=max2 ist, dann:
- - - - max = feld[i]
(ohne es getestet zu haben)
Du hast dann quasi zwei Zahlen: "aktuell größte" und "bis eben größte".
Ja, leider muss ich es ohne Methoden machen. Wir sind noch relativ am Anfang vom Studium. In der 4 We und müssen es mit dem machen was wir bisher hatte.
Vielen lieben Dank für deinen Tipp. Funktioniert einwandfrei. Ez muss ich nur noch peilen wieso das funktioniert:toll: