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.
hallo,
ich grüble gerad über folgendes nach: ich möchte eine funktion schreiben, die den komponententyp int als Parameter hat&den maximalen Wert der übergebenen Reihung bestimmt. Diese Funktion soll eingebettet sein in einem Hauptprogramm, welches die Größe der Reihung einlesen kann, eine entsprechende Reihung anlegt und die Parameter der Funktion mit den über die Standradeingabe eingelesenen Werten initialisiert. Klingt kompliziert, oder
;-)? Was mir dazu eingefallen ist:
Code:
public class Reihung{
private static int Max (int...)//hier würde ich doch nun die Parameter auflisten in Klammern
//auflisten, weiß aber nicht so recht, in welcher Form (wegen der Reihung)
public static void main(String[] args){
int i = x.liesInt(); //eigene Klasse zum Einlesen der Werte (oder muss das int [] i=new int ...heißen?)
System.out.println("Reihung:" + ?);
}//main
}//Max-Funktion
}//class
Ihr seht schon, ich komme nicht weit. Also die allgemeine Form (die äußere) bekomme ich noch hin. Die eine oder andere Anweisung (z.B. das einlesen von int-Werten) auch, aber ich kann mir das Reihungskonstrukt einfach nicht erschließen. Ich würde mich echt freuen, wenn mir jemanden einen Tipp geben könnte, denn ich sitze schon so :shock: vor meinem Java-Buch..(Danke im Voraus).
public class Reihung
{
private static int max (int[] array)//hier würde ich doch nun die Parameter auflisten in Klammern
{ //auflisten, weiß aber nicht so recht, in welcher Form (wegen der Reihung)
int maxInt =0;
for (int i=0;i<10;i++)
{
if (array[i]>maxInt)
maxInt=array[i];
}
return maxInt;
}
public static void main(String[] args)
{
int array = x.liesInt();
int [] array = new int[10];
for (int i=0; i<10;i++)
{
array[i]= x.liesInt();
System.out.println("Reihung:" + array[i]);
}
System.out.println( max(array));
}//main
}//class
What the f: genau das. Bei uns MUSS es "Reihung" heißen, komisch..Aber ja, Danke, das meinte ich! Auf die Lösung mit der for-Anweisung wäre so nicht gekommen..Wenn ich es so ausführe, beschwert sich allerdings der Compiler, weil
Tippfehler schon verbessert. Hatte einfach deinen Code übernommen und wohl
nicht alles verändert :wink:
Gewöhn dir den "Reihungs" sch**** bloß nicht an. Da lacht man dich ja aus
..ja, da hast du wohl recht, mit dem auslachen meine ich :wink:
nochmal zu dem code:
ich habe ihn soweit verstanden, das programm "läuft" auch..allerdings muss ich noch rausfinden, an welcher stelle
ich noch ein system.out.print() einbauen kann, um beim "benutzen" des programms deutlich zu machen, wann man was einliest und wann was ausgegeben wird. aber das sollte ich hinbekommen, danke nochmal!
hallo,
und doch nochmal zum gleichen thema: sorry, ich "musste" array nun doch reihe nennen :roll:
also sieht das programm nun so aus:
Code:
/*Funktion Max, eingebunden in ein Hauptprogramm: Funktion Max soll
/ den maximalen Wert einer int-Reihung bestimmen. Die größe dieser Reihung (array)
/ soll über einen über die Standardeing. eingelesenen Wert bestimmt werden und dann
/ mit ebenfalls eingelesenen Werten initialisiert werden.*/
public class Reihung
{
private static int max (int[] reihe) //
{
int maxInt =0;
for (int i=0;i<10;i++)
{
if (reihe[i]>maxInt)
maxInt = reihe[i];
}
return maxInt;
}
//main soll die größe der Reihung durch eingelesenen Wert bestimmen,
//dann entsprechend viele Werte zur Init. einlesen UND dann
//die Funktion max aufrufen, um den größten Wert zu bestimmen.
public static void main(String[] args)
{
int i = EM01.liesInt();
int [] reihe = new int[10];
for (i=0; i<10;i++)
{
reihe[i]= EM01.liesInt();
System.out.println("Reihung:" + reihe[i]);
System.out.println( max(reihe));
}
}//main
}//class
Soo, in dieser Form ist es schon irgendwie so, wie ich es mir vorgestellt habe...Allerdings läuft das Programm
nun immer so lange, bis man 10 Werte eingegeben hat und es bestimmt nach jeder neuen der 10 Eingabe, den aktuell größten Wert. Eigentlich auch ok, aber ich möchte ja nicht 10 Elemente, sondern einen eigenen Wert n einlesen können zu Beginn, der die Größe des Arrays dann festlegt, mich die entsprechende Anzahl an Werten eingeben lässt und DANN mit der Funktion den größten dieser Werte bestimmt. Vielleicht hat nochmal jemand eine Idee dazu? Mir fehlt einfach noch das Handwerkszeug..Vielleicht mit einer Variable int n = x.liesInt(); am Anfang von main?
Danke..
n'abend :!:
danke für den letzte tipp! ich wollte nur nochmal zeigen, wie das "endprodukt" nun aussieht:
Code:
public class Reihung
{
public static int max (int[] reihe) //
{
int maxInt =0;
int n = 1;
for (int i=0;i<=n;i++)
{
if (reihe[i]>maxInt)
maxInt = reihe[i];
}
return maxInt;
}
//main bestimmt Größe der Reihung durch eingelesenen Wert n.
//Liest entsprechend viele Werte zur Init. der Reihung ein UND
//bestimmt dann durch Aufruf der Funktion max den größten Wert.
public static void main(String[] args)
{
int n= x.liesInt();
int i = x.liesInt();
int [] reihe = new int[n];
for (i=0; i<=n;i++)
{
reihe[i]= x.liesInt();
System.out.println("Reihung:" + reihe[i]);
System.out.println( max(reihe));
}
}//main
}//class
Hätt' ich ohne die Tipps nicht geschafft..
Schönen Abend*
Schön das du dich bedankst, aber du bist nicht ganz fertig :wink:
So funktioniert das nämlich nicht.
Du liest das Array ein, und prüftst nach jedem Wert das max.
geht so aber nicht, weil deine max funktion immer nur die erste Zahl des Arrays einliest.
Das i brauchst du nicht einlesen. das dient nur als Zähler für die Vorschleife.
(Wann verstehen Lehrer endlich das diese selbstgebauten "StandartInputKlassenDinger"
nicht unbedingt das Verständnis fördern :roll:
Ich verbesser das mal kurz:
Code:
public class Reihung
{
public static int max (int[] reihe) //
{
int maxInt =0;
int n = 1;
for (int i=0;i<reihe.length;i++)
{
if (reihe[i]>maxInt)
maxInt = reihe[i];
}
return maxInt;
}
//main bestimmt Größe der Reihung durch eingelesenen Wert n.
//Liest entsprechend viele Werte zur Init. der Reihung ein UND
//bestimmt dann durch Aufruf der Funktion max den größten Wert.
public static void main(String[] args)
{
int n= x.liesInt();
int [] reihe = new int[n];
for (i=0; i<n;i++)
{
reihe[i]= x.liesInt();
System.out.println("Reihung:" + reihe[i]);
}
System.out.println( max(reihe));
}//main
}//class
wenn du nicht verstehst was ich hier geändert hab einfach fragen.
Gleichfalls schönen Abend
huch, oh ja i<reihe.length; hatte ich ja eigentlich schon übernommen..hatte nochmal die vorletzte version
mit copy+p eingefügt, hab wohl nur noch "code" gesehen..
apropos verständnis: das i steht doch für das i-te (index) feld des arrays und ich init. i in der for schleife mit 0 um im ersten feld zu beginnen. und das reihe.length ist dazu da, dass ich meine indexgrenzen (größe des feldes) nicht überschreite. richtig?;-)