Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich möchte - nur wenn ein Anwender "Ja" eingibt - ein Objekt einer Klasse instantiieren. Hab das ganze in ne if-Funktion gepackt. Das geht soweit. Jetzt schimpft aber mein Compiler, wenn ich nach dem if/else Block versuche mit diesem (in if instanziiertem) Objekt weiterzuarbeiten (z.B. eine Methode auf diesem Objekt zu rufen). Also war das wohl keine gute Idee. Auf welche Art könnte ich mein Vorhaben noch realisieren, wenn es mit if wohl nicht geht?
Ich möchte - nur wenn ein Anwender "Ja" eingibt - ein Objekt einer Klasse instantiieren. Hab das ganze in ne if-Funktion gepackt. Das geht soweit. Jetzt schimpft aber mein Compiler, wenn ich nach dem if/else Block versuche mit diesem (in if instanziiertem) Objekt weiterzuarbeiten (z.B. eine Methode auf diesem Objekt zu rufen). Also war das wohl keine gute Idee. Auf welche Art könnte ich mein Vorhaben noch realisieren, wenn es mit if wohl nicht geht?
Was willst du denn auch nach deinem if-else-Block mit dem Objekt anstellen, wenn es eben dieses Objekt doch bewusst nicht geben soll? Du solltest generell dein Konzept überdenken.
zur Erklärung: wenn Du im if-Block eine Variable deklarierst, dann ist sie danach nicht mehr bekannt !!
Stichworte zum googlen wären hier "Gültigkeitsbereich" (oder "Scope")!
Mach' es in etwa so, wie von @Meeresgott vorgeschlagen - aber Vorsicht: bei ihm fällt die Variable "userOK" ziemlich vom Himmel
Vielen Dank schonmal für die Antworten!
Verstehe allerdings nicht was bei dem Code von @Meeresgott anders ist als bei meinem, denn inerhalb des if-Blockes kann ich mit meinem instantiiertem Objekt auch mit meinem Code anstellen was ich will, nur danach eben nichtmehr, wie @VfL_Freak es oben sagte.
Werde mich über Gültigkeitsbereich / Scope informieren, danke für den Richtungshinweis.
Es muss aber ja möglich sein, eine Objektinstantiierung von einer User-Eingabe abhängig zu machen.
Aber ich bin ja noch Anfänger ;-)
Um mal mein Problem nochmal zu veranschaulichen:
mein Code war ungefähr so:
Java:
import java.util.*;
public class Halapalu {
public static void main (String [] args) {
Scanner paulaner = new Scanner (System.in);
System.out.println("Gebe Ja ein: ");
String antwort = paulaner.nextLine();
if (antwort.equals ("Ja")) {
objekt ruediger = new objekt();
}
else {
System.out.println("kein neues Objekt!");
}
ruediger.print();
}
}
nach dem if / else Block habe ich auf dem Objekt ruediger die methode print() gerufen, die in einer anderen Klasse reingehackt wurde. Habe jetzt verstanden warum das nicht geht, suche aber immer noch nach einer Alternative eine Objektinstantiierung von einer bestimmte User-Eingabe abhängig zu machen.
Wenn du ein Objekt in einem if-Zweig deklarierst, dann ist dieses Objekt eben nur in dem if-Zweig bekannt.
Daher musst du das Objekt darüber deklarieren und nach dem if-Zweig abfragen, ob dieses Objekt jetzt einen Wert bekommen hat.
dann könnte ich also ein Objekt darüber instantiieren und dann im if Block den Konstruktor rufen und nach dem if-Block nach den Konstruktor Werten fragen?
finde ich doof, wenn man ein Programm schreiben möchte, wo man vorher noch nicht weiß, wie viele Objekte der User erstellen möchte. ist es nicht aufwendig 200 Objekte mal auf Verdacht vorher schon zu instantiieren?