Java Methode schreiben die Brüche kürzt siehe Foto was bedeutet das void?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet
void bedeutet ja das es nichts zurückgibt oder?

Ja, die Methode gibt keinen expliziten Wert aus ihrem Kontext zurück.

(...) also darf man nichts in die Methode schreiben oder?

Die Methoden dürfen Inhalt besitzen. Sie geben nur, wie gesagt, einfach keinen expliziten Wert zurück. Stattdessen könnte in ihnen eine Ausgabe stattfinden.

Beispiel:

static void sum(int numberOne, int numberTwo) {
  int result = numberOne + numberTwo;
  System.out.println(result);
}
ich würde es nämlich so machen:

Wieso suchst du nicht einfach den größten gemeinsamen Teiler?


Nichtsnutz12 
Beitragsersteller
 16.11.2018, 18:54

also bei void darf man kein return hinschreibe dafür aber System.out.println? Hmm falls das so ist dann macht des irgendwie keinen Sinn weils beides das selbe ist aber naja egal ich nehme einfach mal so hin!

regex9  16.11.2018, 19:08
@Nichtsnutz12

Das habe ich nirgendwo geschrieben.

In jeder Methode ist das Schlüsselwort return erlaubt. Nur ob dahinter noch ein Wert angegeben wird, der aus dem Kontext transportiert werden soll, bestimmt der definierte Rückgabetyp im Methodenkopf.

// allowed
void doSomething() {
  return;
}

// not allowed
void doSomethingElse() {
  return 1;
}

// allowed
int doSomethingOtherImportant() {
  return 1;
}

return veranlasst den Programmfluss, sofort aus den Methodenkontext zu springen, sollte er diesen Befehl passieren.

Ob ein Wert zurückgegeben wird oder nicht, ist ein klarer Unterschied. Die Ausgabe des Ergebnisses ist hier nur ein Workaround, doch nicht jedes Ergebnis, welches eine Funktion berechnet, soll auf der Konsole ausgegeben werden. Daher gibt es Rückgabetypen.

In der Regel ist dies auch der saubere Weg: Eine bestimmte Methode berechnet lediglich einen Wert (tut also nur das, was ihr Name auch aussagt) und weitere Angelegenheiten (wie das Lesen von Eingaben oder die Ausgabe von Daten) werden woanders ausgeführt.

Pseudocode zur Veranschaulichung:

numberOne = readNumber()
numberTwo = readNumber()
result = getSum(numberOne, numberTwo)
print(result)
Nichtsnutz12 
Beitragsersteller
 16.11.2018, 18:44

OHHHH hast recht!!!!!! den ggt hatte ich ja aus der aufgabe davor schon hingekriegt!! Ok danke ich Versuchs!!!!

https://de.wikipedia.org/wiki/Void_(Schl%C3%BCsselwort)

auch sonst empfehle ich Dir, google zu nutzen. Du machst das nicht für Dich für den Lehrer, sondern für Dich selbst. Auch Recherche ist Übungssache.

"... die kuckt", hier überlege Dir einmal, wie Du das prüfen kannst. Ich helfe gerne, doch nicht so, dass ich Deine Aufgabe mache und Dir das Erlernen wegnehme.

modulo

Woher ich das weiß:Studium / Ausbildung – siehe auch Computer
 static String kuerzen(int zaehler, int nenner) {

		int a, b, c;
		a = zaehler;
		b = nenner;
		c = a % b;

		while (c > 0) {
			a = b;
			b = c;
			c = a % b;
		}
		
		return (zaehler / b) + "/" + (nenner / b);
	}

Du kannst dann z.B. 'System.out.println(kuerzen(121,11));' schreiben und erhältst dann '11/1'.

Wenn diese Methode keinen Rückgabewert haben darf (void), dann solltest du vielleicht die Klasse 'Bruch' definieren.

Woher ich das weiß:Berufserfahrung – Programmierer

Nichtsnutz12 
Beitragsersteller
 16.11.2018, 18:33

warum hast du eine neue Methode gebildet? darf ich ja nicht, muss die vorgegebene Methode nutzen…

Ecaflip  16.11.2018, 18:37
@Nichtsnutz12

Da steht doch, dass du die Methode kuerzen schreiben sollst. Die ist ja nicht vorgegeben bzw. der Inhalt fehlt.

Nichtsnutz12 
Beitragsersteller
 16.11.2018, 18:42
@Ecaflip

du hast aber "static String kürzen usw" erzeugt, und bei mir ist eben "public static void kürzen" schon vorgegeben also vor der Aufgabenstellung stand das ich das so rein kopieren soll

Ecaflip  16.11.2018, 18:46
@Nichtsnutz12

Stimmt, das habe ich übersehen, da es eher unüblich ist.

Dann ersetzt du das return-Statement durch System.out.println und dann kannst du es auch als void anstatt String deklarieren. Sollte keinen Fehler geben.