# Min/ Max im Feld suchen



## Thierry (10. Nov 2009)

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?


----------



## eRaaaa (10. Nov 2009)

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 )


----------



## Thierry (10. Nov 2009)

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 (10. Nov 2009)

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  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 (10. Nov 2009)

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 (10. Nov 2009)

Thierry hat gesagt.:


> 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++)
> ...


_

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


		Java:In die Zwischenablage kopieren


for (...){
     if(...){
         .....
      }
}

_


----------



## blablablabla (10. Nov 2009)

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 
Viele Grüße


----------



## Thierry (10. Nov 2009)

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


----------



## eRaaaa (10. Nov 2009)

blablablabla hat gesagt.:


> 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 

```
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 (10. Nov 2009)

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 (10. Nov 2009)

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 _


----------



## eRaaaa (10. Nov 2009)

ä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 (10. Nov 2009)

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 (10. Nov 2009)

Thierry hat gesagt.:


> 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
> 
> ...


_

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 ). 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_


----------



## Thierry (10. Nov 2009)

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 (10. Nov 2009)

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..._


----------



## eRaaaa (10. Nov 2009)

/edit 





blablablabla hat gesagt.:


> 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:In die Zwischenablage kopieren


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 !

_


----------

