Min/ Max im Feld suchen

Status
Nicht offen für weitere Antworten.

Thierry

Mitglied
Hallo!
Ich bin java anfänger und habe folgendes problem: Ich sollte 2 Felder anlegen mit 5 werten und diese ausgeben und dann nach dem minimum im ersten feld suchen und nach dem maximum im zweiten feld suchen.

Aber ich habe keine idee wie ich diese beiden felder nach minimum bzw. maximum durchsuchen und auf stdout ausgeben soll. Kann mir da vllt. jemand ein bißchen weiterhelfen?
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor
arrays durchlaufen und jeweils immer minimum bzw maximum merken:

int min = Integer.MAX_VALUE;
schleife von i bis array ende
ist schleifenwert am index i < min ? => min = wert am index i

das gleiche dann nochmal für max mit anderem array (bzw, man kann das natürlich auch in einer sclhiefe erledigen, da beide arrays gleichgroß sind ;D )
 
Zuletzt bearbeitet:

Thierry

Mitglied
also ich hab jetzt das für das minimum, aber iwie kommt da statt 5 etwas mit -2147.... raus?


int min = Integer.MIN_VALUE;
for(int i = 0; i < feld1.length; i++)

if (feld1 < min)
min = feld1;
System.out.println(min);

was mache ich falsch? nicht böse sein, hab vor bis 2 wochen noch nie programmiert :S
 

eRaaaa

Top Contributor
int min = Integer.MIN_VALUE; <-- da muss int min = Integer.Max_VALUE stehen
denn min_value, ist die kleinste zahl die int darstellen kann. also sind deine zahlen im array dann natürlich auch immer größer (normalerweise zumindestens ;D ) als das min :D also min am anfang auf den maximalwert setzen. (beim maixmalen wert natürlich andersherum)
(was man auch machen kann ist, min am anfang auf feld1[0] setzen, und dann nicht von 0 ...bis ende durchlaufen, sondern ab int i=1 ...).
aber wollt dich nicht gleich am anfang verwirren.
 

Thierry

Mitglied
vielen dank, funktioniert jetzt fast alles, außer beim maximum hab ich da anscheinend noch einen fehler weil er da die i's die ich mal jetzt mit einem stern markiere unterringelt:

int min = Integer.MAX_VALUE;
for (int i = 0; i < feld1.length; i++)
if (feld1 < min)
min = feld1;
System.out.println(min);

int max = Integer.MIN_VALUE;
for (int i = 0; i < feld2.length; i++);
if (feld2[*i] > max)
max = feld2[*i];
System.out.println(max);
 

eRaaaa

Top Contributor
vielen dank, funktioniert jetzt fast alles, außer beim maximum hab ich da anscheinend noch einen fehler weil er da die i's die ich mal jetzt mit einem stern markiere unterringelt:

int min = Integer.MAX_VALUE;
for (int i = 0; i < feld1.length; i++)
if (feld1 < min)
min = feld1;
System.out.println(min);

int max = Integer.MIN_VALUE;
for (int i = 0; i < feld2.length; i++);
if (feld2[*i] > max)
max = feld2[*i];
System.out.println(max);


for (int i = 0; i < feld2.length; i++); <-- das zeichen muss da weg :)
ansonstne solltest du auch immer schön klammenr setzen ;D
Java:
for (...){
     if(...){
         .....
      }
}
 

blablablabla

Mitglied
Hi,
falls du Student an der Uni Erlangen bist, und die Aufgabe für den Grundkurs GDI zu erledigen hast, muss ich dich warnen.
Die Ausgabe der Felder muss per Schleife erfolgen, am besten mit der for-Schleife.
Kuck mal nochmal in der Aufgabenstellung.
PS: Falls du nicht an der Uni -Erlangen bist, dann sorry :D
Viele Grüße
 

Thierry

Mitglied
ah da haben wir ja den kleinen fehler :D nochmals vielen dank für deine hilfe:toll:
man hört sich vielleicht demnächst wieder ;)
 

eRaaaa

Top Contributor
Hi,
falls du Student an der Uni Erlangen bist, und die Aufgabe für den Grundkurs GDI zu erledigen hast, muss ich dich warnen.
Die Ausgabe der Felder muss per Schleife erfolgen, am besten mit der for-Schleife.

falls dem so sei (ich hatte das selber auch überlesen, dass du die einzelnen felder ausgeben musst), kannst du den teil den du im ersten post hast
Java:
System.out.println(feld1[0] + " " + feld1[1] + " " + feld1[2] + " "
+ feld1[3] + " " + feld1[4]);
System.out.println(feld2[0] + " " + feld2[1] + " " + feld2[2] + " "
+ feld2[3] + " " + feld2[4]);
weglassen.
die schleife(n) hast du ja auch schon, musst ja dann dort jeweils nur eine zeile System.out. einfügen :)
 

Thierry

Mitglied
so?

int min = Integer.MAX_VALUE;
for (int i = 0; i < feld1.length; i++)
if (feld1 < min)
min = feld1;
System.out. <----------- ???
System.out.println("Das Minimum im ersten Feld ist " + min + ".");

Haut bei mir iwie überhaupt nicht hin:(
PS: Ja ich bin student aus erlangen, du etwa auch? :)
 

blablablabla

Mitglied
int min = Integer.MAX_VALUE;
for (int i=0; i<Feld1.length; i++)
if (Feld1 < min)
min = Feld1;
System.out.println("blablabla" +min );

Wozu 2mal System.out.print?
Ja bin auch aus Erlangen :D
 

eRaaaa

Top Contributor
ähm ne so meinte ich das nicht :)

1.) setze klammern ! (siehe oben)
2.) schreibe die ausgabe so, wie du auch schon im ersten post die ausgabe gemacht hast, halt nur nicht für alle, sondenr nur für den aktuellen wert
 

Thierry

Mitglied
oh man, grad war noch alles in ordnung und jetzt bin ich voll am verzweifeln...ich krieg das mit dem system.out nicht anders hin als auf die weise ----> System.out.println(feld1[0] + " " + feld1[1] + " " + feld1[2] + " "+ feld1[3] + " " + feld1[4]);

und jetzt nachdem ich die klammern gesetzt habe funktioniert auch mein maximum nimmer :(

int max = Integer.MIN_VALUE;
for (int i = 0; i < feld2.length; i++) { <-----
if (feld2 > max) { <------
max = feld2;
System.out.println("Das Maximum im zweiten Feld ist " + max
+ ".");
} <-----
} <-----
 

eRaaaa

Top Contributor
oh man, grad war noch alles in ordnung und jetzt bin ich voll am verzweifeln...ich krieg das mit dem system.out nicht anders hin als auf die weise ----> System.out.println(feld1[0] + " " + feld1[1] + " " + feld1[2] + " "+ feld1[3] + " " + feld1[4]);

und jetzt nachdem ich die klammern gesetzt habe funktioniert auch mein maximum nimmer :(

int max = Integer.MIN_VALUE;
for (int i = 0; i < feld2.length; i++) { <-----
if (feld2 > max) { <------
max = feld2;
System.out.println("Das Maximum im zweiten Feld ist " + max
+ ".");
} <-----
} <-----


also jetzt sind wir schon fast soweit, dass dir alles vorgekaut wird, was natürlich nicht so toll ist ;(
also:
1.) du willst doch das maximum nur EINMAL ausgeben(nämlich am ende) und nicht jedesmal wenn ein maximum gefunden wird --> also die zeile mit deiner ausgabe, nach der schleife ausgeben (nach der zweiten klammer!!)

2.) nun willst du aber bei JEDEM schleifendurchgang, den wert im array, an der stelle/index i ausgeben.
was kannst du da also bei System.out.println(xxxx); schreiben? (p.s.: du vergleichst diesen wert doch sogar schon, und weist diesen auch dem maximum zu, wenn es ein maximum ist :D). wenn du jetzt weisst was ich meine, musst du dir nur noch überlegen, an welcher stelle du das einbauen musst, innerhalb der schleife.

/edit: hier noch ein bisschen lesestoff aus der java insel: Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 2.7 Schleifen
 
Zuletzt bearbeitet:

Thierry

Mitglied
tut mir leid, tu mich da wirklich schwer, ist nich so mein gebiet die informatik...

also soweit ich es verstanden habe solllte es so aussehen: System.out.println(field1), aber da wird das i unterringelt. einsetzten würde ich es nach der schleife
 

blablablabla

Mitglied
Du kannst es nicht nach der Schleife mit " System.out.print(Feld1); " lösen, da das nur in der Schleife definiert ist.
Das System.out.print muss also noch vor Abschluss der Schleife eingebaut werden.

PS: ich hoffe ich sag nichts falsches, bin ja auch ein Neuling...
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor
/edit
Du kannst es nicht nach der Schleife mit " System.out.print(Feld1); " lösen, da das nur in der Schleife definiert ist.
Das System.out.print muss also noch vor Abschluss der Schleife eingebaut werden.


genau !

du hast ein array mit zahlen. du hattest oben doch schon ausgegeben feld1[0], feld1[1], feld1[2] ...usw.
um das jetzt nicht händisch aufschreibne zu müssen(überleg dir das mal bei einem array von mehr als nur 5 elementen), kann man sich dafür schleifen basteln :) (ich hatte dir übrigens noch einen link beigefügt ;D )

deine schleife macht nichts anderes als jetzt von 0 bis 4 hochzuzählen.(die zahl steht dann in i )
Java:
for (int i = 0; i < feld2.length; i++) {
 System.out.println(???); //hier willst du ja die zahl ausgeben, die an stelle i im array steht,
 if(.....){
 ...... //hier willst du überprüfen ob dieser wert ein min/max ist
}
}  //schleifenende
//jetzt  hast du das min max bestimmt und kannst es ausgeben !
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben