Variable aus einer Methode einlesen in einer verarbeiten und

Status
Nicht offen für weitere Antworten.

Chroman

Mitglied
Hi, ich möchte, dass die Variable benutzername von der methode "BenutzernameEinlesen" aus der Main methode ausgelesen wird. Dann soll in der methode "BenutzernameEinlesen" der Variable "benutzername" ein String zugewiesen werden, dieser soll dann wieder zurück an die Main methode gegeben werden damit er in anderen Methoden wieder abgerufen werden kann.

Versteht ihr was ich mein?

Code:
import EAjava.*;

public class test {
	static Input eing = new Input();

	public static void main(String[] args) {

		String benutzername = new String("");

		System.out.println(BenutzernameEinlesen(benutzername));

		System.out.println(eingabemenue(benutzername));

	}

	private static String BenutzernameEinlesen(String benutzername) {

		benutzername = eing.readString("Bitte gib dein Vornamen ein: ");
		System.out.println("");
		System.out.println("");

		String thomas = new String("thomas");

		if (angela.equalsIgnoreCase(benutzername)) {
			benutzername = "Thomas";
		}

		System.out.println("Vielen Dank " + benutzername + " für die Eingabe");

		return benutzername;
	}

	private static char eingabemenue(String benutzername) {

		System.out.println("\n \n \n \n");
		System.out.println(benutzername);
		System.out.println("So " + benutzername + " nun darfst du wählen");
		System.out.println("1 ");
		System.out.println("2 ");
		System.out.println("3 ");
		System.out.println("4 ");
		System.out.println("x ");
		System.out.println("_______________________________");
		char e = eing.readChar("Bitte Option eingeben! ");
		System.out.println();

		return e;
	}

}

Ich würde gerne dass der eingebene Benutzername in der Methode "eingabemenue" eingelesen wird und dann

Code:
		System.out.println(benutzername);
		System.out.println("So " + benutzername + " nun darfst du wählen");

ausgegeben wird! Jedoch klappt dies nicht! Die Ausgabe sieht so aus:



So nun darfst du wählen

sie sollte aber so aussehen (wenn man Thomas als Name eingegeben hat)

So Thomas nun darfst du wählen



Warum klappt das nicht? Wie kann ich den eingegeben Benutzername für alle Methoden verfügbar machen ohne die ganze Methode BenutzernamenEinlesen komplett aufzurufen?


Danke für eure Hilfe
 
Hi,


Hier die Klasse in der main ist:
Code:
import EAjava.*; 

public class test 
{ 
   static Input eing = new Input(); 

   public static void main(String[] args) 
   { 

      String benutzername = "";
      EingabeAusgabe ea = new EingabeAusgabe();

      ea.benutzernamenEinlesen();

      if (ea.eingabeMenue(ea.getBenutzername()) == 'a' )
      {
            blablabla....
      }
   } 
}

Hier die Klasse die einliest und ausgibt:
Code:
public class EingabeAusgabe
{
   private String benutzername;

   public EingabeAusgabe() 
   {
        benutzername = "";
   }

   public void setBenutzername(String name)
   {
        this.benutzername = name;
   }

   public String getBenutzername()
   {
        return (this.benutzername);
   }

   public void benutzernameEinlesen() 
   { 
      benutzername = eing.readString("Bitte gib dein Vornamen ein: "); 
      System.out.println(""); 
      System.out.println(""); 

      String thomas = "thomas"; // reicht wenn Du den String so anlegst

      if (thomas.equalsIgnoreCase(benutzername))  // alternativ: "thomas".equalsIgnoreCase(...)
      { 
         benutzername = "Thomas"; 
      } 

      System.out.println("Vielen Dank " + benutzername + " für die Eingabe"); 
   } 

   public char eingabeMenue(String benutzername) 
   { 
      System.out.println("\n \n \n \n"); 
      System.out.println(benutzername); 
      System.out.println("So " + benutzername + " nun darfst du wählen"); 
      System.out.println("1 "); 
      System.out.println("2 "); 
      System.out.println("3 "); 
      System.out.println("4 "); 
      System.out.println("x "); 
      System.out.println("_______________________________"); 
      char e = eing.readChar("Bitte Option eingeben! "); 
      System.out.println(""); 

      return (e); 
   } 
}

Hoffe das konnte Dir helfen😉

greetz
SLi
 
Hi,

hehe.
In der main erstellst Du ein Objekt vom Typ EingabeAusgabe.
Dieses Objekt speichert in sich den benutzernamen, dargestellt durch die Klassenvariable, zu der es, wie es sein sollte, getMethoden() und setMethoden() gibt.
Mit diesen Methoden wird auf die variable zugegriffen, wenn man sich ausserhalb der Klasse/Objekt des Typs EingabeAusgabe befindet.

In main steuerst Du jetzt nur noch, WAS, WANN passieren soll, aber nicht mehr wirklich WIE. Die einlesearbeit macht jetzt die EingabeAusgabe-Klasse. Du brauchst auch einer Methode keine Parameter mitgeben, wenn diese sie gar nicht verwendet. Wenn Du benutzername in der Methode ändern willst, musst Du dafür sorgen, dass die Variable innerhalb der ganzen Klasse "sichtbar" ist und kannst dann von beliebiger Stelle aus den Wert der Variabklen ändern. Übergibst Du einen Parameter, so ist dieser nur innerhalb der Methode gültig und wird danach sofort wieder verworfen. In Deinem Beispiel hast Du benutzername übergeben und innerhalb der MEthode geändert. Die Ändernug bezog sich leider nur auf eine Kopie von benutzername.

Wenn Du noch Fargen hast, frag ruhig 😉

greetz
SLi
 
Hey cool dankeschön!

Also mit Objekten haben wir auch schon was gemacht in der Uni ich bin diese Woche aber noch nicht dazu gekommen das mal nachzulesen, ich weiß aber, was ich heute lesen werde *g* Objekte scheinen wohl ganz sinnvoll zu sein!

Vielen Dank!

Ach doch noch eine Frage, welche Namen müssen Fest sein und was kann ich variieren?

(getMethoden(), setMethoden(), EingabeAusgabe ea = new EingabeAusgabe(), ea.benutzernamenEinlesen();
 
evtl solltest du künftig System.out.println(" ");
durch System.out.println(); ersetzen, falls es dir lediglich um einen Zeilenumbruch geht.
(bei mehreren hintereinander auch System.out.println("\n\n\n") ..
 
Chroman hat gesagt.:
Ach doch noch eine Frage, welche Namen müssen Fest sein und was kann ich variieren?

(getMethoden(), setMethoden(), EingabeAusgabe ea = new EingabeAusgabe(), ea.benutzernamenEinlesen();

hä? :autsch: Versteh ich nicht 😀
Wie fest sein und variieren?

In Java schreibt man in der "Höckerschreibweise", wie es meiner Lehrer damals formulierte.
Klassennamen groß (EingabeAusgabe), KONSTANTEN so, methodenNamenMethode() fangen klein an und bei Sinnabschnitten wieder den ersten groß. Variablen entweder nur klein oder wie Methoden. Es gibt Leute die verwenden noch dazu die ungarische Notation. Dh. zB für ein int: int nAnzahl also ein Bezeichner für den Typ vor dem Namen. Getter und Setter haben immer das Prefix get oder set^^ und dazu den Namen der Variable. zB getNAnzahl()(ja sieht beschissen aus, wäre aber Konvetion) deshalb verzichte ich auf Ungarn und schreibe lieber getAnzahl().

Wichtig ist nur, dass Du es einheitlich machst. Gewöhn Dir einen Stil an und halt ihn im ganzen Programm durch. Manchmal gibt es Methodennamen die es schon von Java aus gibt, weil sie zB teil einer Klasse sind (getHeight(), getWidth()), wenn Du diesselben Namen verwendest und nur anderen Code reinschreibst, das "überschreibst" Du die Methoden und es kann zu Fehlern kommen (kürzlich hier vorgekommen). Also halt die Augen offen, welche Namen schon vergeben sind 😉

Meintest Du das?

greetz
SLi
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben