Methoden in Java

123michi19

Lt. Junior Grade
Registriert
Okt. 2014
Beiträge
318
Hallo Leute,

ich schreibe gerade eine Funktion, welche eine Zeichenkette beliebiger Länge mit beliebiger Startposition in eine Zeile zeichnen soll.

Hier einmal mein Code:

Code:
/*Weihnachten*/
public class Weihnachten
{
	public static void main (String[]args)
	{
		char zeichen = 'a';
		int start = 3;
		int laenge = 5;
		printKette ();
		System.out.println (printKette());
	}
	
	static void printKette (char zeichen, int start, int laenge)
		{ 
			for (int i=0; i<start-1; i++)
			     {
			     System.out.println (" ");
			     }
			          for (int i=0; i<laenge; i++)
			          {
			          System.out.println (zeichen);
			          }
			
		}
		
}

Allerdings bekomme ich vom Compiler immer die Fehlermeldung: method printKette in class Weihnachten cannot be applied to given types.

Könnt ihr mir bitte sagen, wo mein Fehler liegt?

Vielen Dank
 
Naja, du hast eine Methode, der du ein char und zwei int übergeben musst :D
Das solltest du dann beim Methodenaufruf auch tun :P
Der Methodenaufruf sieht dann in etwa so aus:
Code:
printKette(zeichen, start, laenge);
Du musst die Methode auch nicht zweimal ausführen, und da deine Methode nichts zurückgibt (void), wird
Code:
System.out.println(printKette());
nicht funktionieren
 
Zuletzt bearbeitet:
Aber mache ich das nicht in Zeile 13?

(Sorry, für mich ist das alles noch Neuland:D)
 
123michi19 schrieb:
Aber mache ich das nicht in Zeile 13?

(Sorry, für mich ist das alles noch Neuland:D)

Ich denke, du gehst davon aus, dass, weil die Variablen in der Hauptmethode gleich heißen wie die Variablen in der printKette()-Methode, direkt an die Methode übergeben werden. Das ist aber in Java nicht der Fall :D

Wie lernst du denn Java?

Wenn deine Methode ein paar Variablen haben will, musst du ihr die Variablen explizit übergeben, indem du sie in den Aufruf schreibst, in die Klammern. So wie ich das in meinem anderen Beitrag geschrieben habe.
 
Ok, ich habe die fehlerhaften Sachen jetzt einmal rausgenommen. Sieht dann folgendermaßen aus:

Code:
/*Weihnachten*/
public class Weihnachten
{
	public static void main (String[]args)
	{
		char zeichen = 'a';
		int start = 3;
		int laenge = 5;
		
	}
	
	static void printKette (char Buchstabe, int Beginn, int Dauer)
		{ 
			for (int i=0; i<Beginn-1; i++)
			{
				System.out.println (" ");
			}
			for (int i=0; i<Dauer; i++)
			{
				System.out.println (Buchstabe);
			}
		
		
		}
		
}
 
Und dann musst du in Zeile 9 den Methodenaufruf hinschreiben.
Was soll dein Programm den schönes machen?
 
Zuletzt bearbeitet:
Der Methodenaufruf wäre dann:

Code:
printKette (char Buchstabe, int Beginn, int Dauer)
 
Nein. In dem Methodenaufruf musst du die Typbezeichner nicht hineinschreiben, und zweitens kennt deine Hauptmethode die Variablen Buchstabe, Beginn und Dauer nicht. Was sie kennt, sind die Variablen zeichen, start & laenge.
Der Methodenaufruf sieht also folgendermaßen aus:
Code:
printKette(zeichen, start, laenge);

Schöner wäre, wenn du deine Variablen immer klein schreibst, verbessert die Lesbarkeit und ist Standard. Ändert aber nichts an der Funktionalität des Programms.
 
@123michi19
Bitte, bei Java Variablen nicht mit Großbuchstaben schreiben, diese beginnen immer mit Kleinbuchstaben. Großbuchstaben sind für Klassen reserviert. Danke.
 
123michi19 schrieb:
Tausend Dank für deine Hilfe :-) Jetzt läuft das Programm ;-)

Verstehst du auch, warum es vorher nicht funktioniert hat und jetzt schon?
Das ist imho viel wichtiger, dass du auch etwas dabei lernst.
 
System.out.println (printKette());

Diese Anweisung konnte nicht funktionieren, da ich im Methodenaufruf ja void habe, also kein return erfolgt;

Und ;

printKette (char Buchstabe, int Beginn, int Dauer) kann in der Methodendefinition nicht funktionieren, da diese zu genanntem Zeitpunkt noch nicht einmal deklariert sind --> daher auch zeichen,start,laenge.
 
123michi19 schrieb:
printKette (char Buchstabe, int Beginn, int Dauer) kann in der Methodendefinition nicht funktionieren, da diese zu genanntem Zeitpunkt noch nicht einmal deklariert sind --> daher auch zeichen,start,laenge.
Nein, die Variablen werden mit der Deklaration der Methode automatisch mit-deklariert und können innerhalb der Methode (nur nur da) verwendet werden. Welche Namen die Variablen haben, mit denen du die Methode aufrufst spielt keine Rolle, sie müssen nur vom gleichen Typ sein.
 
Zurück
Oben