Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- String aus anderer Klasse (http://www.informatikerboard.de/board/thread.php?threadid=1899)
Geschrieben von Robert93 am 25.08.2014 um 21:44:
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?
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
|
|
Geschrieben von ed209 am 26.08.2014 um 00:44:
Hi Robert,
Willkommen in der Programmierwelt
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
ED
Geschrieben von Robert93 am 27.08.2014 um 20:14:
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

Hat mich etwas weiter gebracht
Geschrieben von eulerscheZahl am 28.08.2014 um 08:40:
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.
Geschrieben von Robert93 am 28.08.2014 um 21:23:
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
Forensoftware: Burning Board, entwickelt von WoltLab GmbH