String aus anderer Klasse

Neue Frage »

Auf diesen Beitrag antworten »
Robert93 String aus anderer Klasse

Meine Frage:
Hey Leute,
ich bin neu in der Programmierwelt, habe mir ein Java-Buch gekauft und arbeite mich Stück für Stück in Java ein.
Bin momentan in der OO-Programmierung angelangt, und hatte mir überlegt ein Mini-Quiz zu programmieren.
Dabei wollte ich unbedingt boolean mit reinschreiben, da ich damit etwas rumspielen wollte, da ich vorher noch nichts damit gemacht habe.
Aber irgendwie lässt sich ein String Wert aus dem Objekt e1 nicht herauslesen! Hoffe ihr könntet eventuell kurz drüberschauen und mir die Fehler erklären die ich gemacht habe? smile
Danke euch.

Meine Ideen:
Hier die Codes:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
public class ProgrammStarten  {
    public static void main(String[] args)  {

    Quiz starten = new Quiz();
    starten.starteQuiz();
  }//end main
}//end class


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
import java.util.*;

public class Eingabe  {
  void antworteingabe()  {
  Scanner sc = new Scanner(System.in);

  System.out.println("etwas Eingeben");

  String eingabe = sc.next();
  }//end antworteingabe
}//end class


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
public class Antwort  {

boolean antwort1 = false;

void quizantwort()  {
  if(antwort1 == true)  {
  System.out.println("Das war die richtige Antwort");
  }//end if
  else{
  System.out.println("Diese Antwort ist nicht richtig");
  }//end else
}//end quizantwort
}//end class


Und hier das Hauptprogramm:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
public class Quiz  {

    public void starteQuiz()  {

    Eingabe e1 = new Eingabe();
    Antwort a1 = new Antwort();

    System.out.println("Willkommen zum Quiz");
    System.out.println("Wer war...?");

    e1.antworteingabe();

    if(e1.eingabe == "1")  {
    a1.antwort1 = true;
    a1.quizantwort();
    }//end if
  }//end starteQuiz
}//end class
 
Auf diesen Beitrag antworten »
ed209

Hi Robert,

Willkommen in der Programmierwelt Wink

Du hast deine Variable eingabe als lokale Variable in der Methode antworteingabe deklariert. Das bedeutet, daß du nur innerhalb dieser Methode darauf zugreifen kannst.

Wenn Du von außerhalb darauf zugreifen willst musst du deine Variable als Feld der Klasse Eingabe deklarieren.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
import java.util.*;

public class Eingabe  {

  public String eingabe;

  void antworteingabe()  {
  Scanner sc = new Scanner(System.in);

  System.out.println("etwas Eingeben");

  eingabe = sc.next();
  }//end antworteingabe
}//end class


Habs nicht getestet, viel Glück Augenzwinkern

ED
Auf diesen Beitrag antworten »
Robert93

Danke, hat funktioniert. Jedenfalls womit ich ein Problem hatte.
Das Programm läuft allerdings immer noch nicht wie gewünscht^^
Ich werde mal noch etwas damit rumspielen.
Danke dennoch für die Hilfe Augenzwinkern Hat mich etwas weiter gebracht smile
Auf diesen Beitrag antworten »
eulerscheZahl

Was mir spontan auffällt:
code:
1:
if(e1.eingabe == "1")

kurze Antwort: das funktioniert so nicht, nimm e1.eingabe.equals("1")
lange Antwort: == vergleicht zwei Objekte. Du hast hier aber zwei verschiedene Strings (stehen an verschiedenen Stellen des Speichers). Hier wird nicht auf den Inhalt der Strings geprüft, sondern auf die Adresse. In C# z.B. würde der Vergleich so funktionieren, in Java nicht.
 
Auf diesen Beitrag antworten »
Robert93

Hallo euler,

top danke! Das war mein Problem. Noch etwas rumgeschraubt an der ganzen Sache und jetzt funktionierts einwandfrei.

Tolle Sache, das hier. Danke euch Augenzwinkern
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »