Methodenaufruf Main Methode < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 19:59 Sa 07.05.2011 | Autor: | Marius6d |
Aufgabe | Ich soll je eine Methode schreiben die den max bzw. min Wert aus einem Array entnimmt. |
Also ich habe folgendes programmiert:
public class Aufgabe1 {
public static int max, min;
public static int max(int[] ganzezahlen){
System.out.print("Max-Methode");
for ( int index = 0; index < ganzezahlen.length; index++ )
{
if ( ganzezahlen[ index ] > max ) // das gegenwärtige Element untersuchen
max = ganzezahlen[ index ]; // wenn es bis dahin das Größte ist, max ändern
}
max = ganzezahlen[0];
return max;
}
public static int min(int[] ganzezahlen){
System.out.print("Min-Methode");
for ( int index = 0; index < ganzezahlen.length; index++ )
{
if ( ganzezahlen[ index ] < min ) // das gegenwärtige Element untersuchen
min = ganzezahlen[ index ]; // wenn es bis dahin das Größte ist, min ändern
}
min = ganzezahlen[0];
return min;
}
public static void main(String[] args) {
System.out.print("Main-Methode");
int[ ] ganzezahlen = new int[10]; //Array mit 10 Fächern
for (int i=0; i<10; i++){ //for schleife für i von 0 bis 10
double d=Math.random(); //Zufallsgenerator für Zahlen zwischen 1 und 20
d=d*19+1;
int f=(int)d;
ganzezahlen[i] = f; // Array wird für die i-ten Schubladen mit f gefüllt.
}
}
}
Nun soll ich die min und die max methode aus der Main methode heraus aufrufen, aber wie geht das? Schlussendlich soll ich dann den minimalen und maximalen Wert ausdrucken.
|
|
|
|
Hallo Marius
Wichtig für den Aufruf ist der Methodenkopf, den du ja schon implementiert hast.
Eine Methode (wenn sie in der gleichen Klasse ist) kann man aufrufen mit dem Methodennamen und eventuellen Übergabewerten.
Für deine Anwendung also:
max(ganzezahlen)
min(ganzezahlen)
der Übergabewert muss dabei immer vom Typ sein, den du im Kopf der Methode definierst (also hier ein int array).
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 16:17 So 08.05.2011 | Autor: | Marius6d |
Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
Hmm ok und wo muss ich das einbauen? ich habe es in der main methode eingebaut nach der Schleife, und dann wie folgt:
public static void main(String[] args) {
System.out.print("Main-Methode");
System.out.println();
System.out.println();
int[ ] ganzezahlen = new int[10]; //Array mit 10 Fächern
for (int i=0; i<10; i++){ //for schleife für i von 0 bis 10
double d=Math.random(); //Zufallsgenerator für Zahlen zwischen 1 und 20
d=d*19+1;
int f=(int)d;
ganzezahlen[i] = f; // Array wird für die i-ten Schubladen mit f gefüllt.
System.out.println(ganzezahlen[i]);
}
max(ganzezahlen);
min(ganzezahlen);
System.out.println();
System.out.println(max(ganzezahlen));
System.out.println(min(ganzezahlen));
Aber er gibt mir nicht die richtigen Werte aus, vor allem gibt er für max und min die selben werte aus?!
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 17:08 So 08.05.2011 | Autor: | sailent |
Max und Min haben die selben Werte weil in den Methoden jeweils vor dem Return der max und min Wert auf den ersten Platz im Array gesetzt wird. Diese Zeilen müssen entfernt werden aus den Methoden : max = ganzzahlen[0] und min = ganzzahlen[0]. Die machen keinen Sinn.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 17:13 So 08.05.2011 | Autor: | Marius6d |
Ah ok vielen Dank, jetzt gibt er mir den Max Wert richtig aus, aber den Min Wert setzt er immer auf Null, was ist da falsch?
public class Aufgabe1 {
public static int max, min;
public static int max(int[] ganzezahlen){
System.out.print("Max-Methode");
System.out.println();
System.out.println();
for ( int index = 0; index < ganzezahlen.length; index++ )
{
if ( ganzezahlen[ index ] > max ) // das gegenwärtige Element untersuchen
max = ganzezahlen[ index ]; // wenn es bis dahin das Größte ist, max ändern
}
return max;
}
public static int min(int[] ganzezahlen){
System.out.print("Min-Methode");
System.out.println();
System.out.println();
for ( int index = 0; index < ganzezahlen.length; index++ )
{
if ( ganzezahlen[ index ] < min ) // das gegenwärtige Element untersuchen
min = ganzezahlen[ index ]; // wenn es bis dahin das Größte ist, min ändern
}
return min;
}
public static void main(String[] args) {
System.out.print("Main-Methode");
System.out.println();
System.out.println();
int[ ] ganzezahlen = new int[10]; //Array mit 10 Fächern
for (int i=0; i<10; i++){ //for schleife für i von 0 bis 10
double d=Math.random(); //Zufallsgenerator für Zahlen zwischen 1 und 20
d=d*19+1;
int f=(int)d;
ganzezahlen[i] = f; // Array wird für die i-ten Schubladen mit f gefüllt.
System.out.println(ganzezahlen[i]);
}
int a = max(ganzezahlen);
int b = min(ganzezahlen);
System.out.println();
System.out.println(a);
System.out.println(b);
}
}
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 17:19 So 08.05.2011 | Autor: | sailent |
da du positive Zahlen generierst und das min beim initialisieren auf 0 gesetzt wird, keine keine von dir generierte Zahl kleiner sein.
eine Lösung wäre wohl vor der for-schleife in der Min-Methode das min auf 1000 zu setzen : min = 1000;
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:53 So 08.05.2011 | Autor: | frille |
Noch schönerEeleganter wäre es jedoch den min-Wert auf das Erste Element des Arrays zu setzen, bevor man in die for-Schleife geht. Dann steht dort ein realistischer Wert und kein Mondwert ;)
min = zahlenarray[0]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:22 So 08.05.2011 | Autor: | Marius6d |
Vielen Dank für eure Antworten,
jetzt hat alles geklappt
|
|
|
|