Informatik Experten?

 - (Informatik, Wirtschaftsinformatik)  - (Informatik, Wirtschaftsinformatik)

1 Antwort

Variablen werden ohne Typ angesprochen. Und da kennzeichen bereits initialisiert ist bzw. eine Klassenvariable der Instanz ist, wäre

if(int kennzeichen==1)

falsch. Allgemein kann man keine Variablen in einer Bedingung initialisieren vermutlich (nie ausprobiert, würde aber wenig Sinn machen!). Daher einfach

if(kennzeichen==1)

Auch das letzte stimmt nicht. kennzeichen==3 wird im else-Zweig des oberen Konstrukts abgearbeitet.

Die untere Abfrage ist also eigenständig und hier wird im if-Zweig die Anrede + Name zurückgegeben, also zum Beispiel "Sehr geehrte Frau Müller" im else-Zweig aber nur die Anrede.

Was könnte also eine passende Abfrage sein?

Woher ich das weiß:Studium / Ausbildung – Diplom Wirtschaftsinformatiker

verstehe das mit else nicht

0
@nizarmelisa

Naja, bei welcher Anrede sähe es denn komisch aus, wenn dahinter noch ein Name steht?

Genau, bei "Sehr verehrte Damen und Herren", entsprechend sollte Anrede 3 beim else-Zweig aufgerufen werden. Die if-Bedinung muss also nicht

if(kennzeichen==3)

lauten, sondern?

0

Ich verstehe das diese zurück gegeben wird aber ich verstehe nicht muss man dort noch nach else was hin schreiben oder was meinst du ?

0
@nizarmelisa

Nein, er meint, dass es so falschrum ist. Wenn du kennzeichen==3 abfragst, wird der Name nur bei "Sehr verehrte Damen und Herren" angehängt, aber nicht bei "sehr geehrter Herr" oder "sehr geehrte Frau". Du musst die Bedingung also so umbauen, dass sie bei allen Werten außer 3 wahr ist (oder auch bei Werten kleiner als 3).

Was mir noch aufgefallen ist: Du schreibst überall "puplic" anstatt "public". Das könnte Punktabzüge geben. Bei "Frau" soll auch "geehrte" anstatt "verehrte" stehen. Und die Einrückungen der "else" und "else if" Zeilen erzeugen bei mir den Eindruck, dass du überall noch geschweifte Klammern ergänzen sollst. Also zusammengefasst etwa so:

// Kennzeichen für Anrede: 1 = "Herr", 2 = "Frau",
// 3= "Sehr verehrte Damen und Herren"
public class WeitereAnrede {
	/*
	 * Der Konstruktor ist eigentlich unsinnig, weil der Standardkonstruktor
	 * automatisch immer dabei ist. Im "wahren Leben" würde man die Funktion
	 * auch nicht in eine extra Klasse schreiben oder falls man einige Funktionen
	 * auf diese Weise zusammensammeln will, würde man sie als static definieren
	 * und den Standardkonstruktor mit private ausblenden, damit man nicht versehentlich
	 * ein Objekt davon erzeugen kann (siehe z.B. die Math Klasse)
	 */
	public WeitereAnrede() { 
	}
	
	// Die Funktion würde man wie gesagt normalerweise static machen.
	public String anredeErgaenzung (String name, int kennzeichen) {
		String anrede;
		if (kennzeichen == 1) {
			anrede = "Sehr geehrter Herr";
		} else if (kennzeichen == 2) {
			anrede = "Sehr geehrte Frau"; // hier hast du "verehrte" geschrieben
		} else {
			anrede = "Sehr verehrte Damen und Herren"; // Im Geschäftsverkehr würde man hier auch "geehrte" nehmen, 
			                                           // aber wenns so in der Aufgabe steht, übernehme ich es mal so.
		}
		
		if (kennzeichen != 3) {
			return anrede + " " + name;
		} else {
			return anrede;
		}
	}
}

PS: Ist es eigentlich Pflicht, dass ihr das handschriftlich macht? Wenn du eine richtige IDE benutzen würdest, könntest du testen, ob es läuft und Fehler vermeiden.

1

Was möchtest Du wissen?