Objekt in if instanziieren

  • Themenstarter Themenstarter Gelöschtes Mitglied 54019
  • Beginndatum Beginndatum
G

Gelöschtes Mitglied 54019

Gast
Hallo zusammen,

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?

Danke im Voraus!
JavaXava
 
Code:
public void start ()
{
     Objekt obj = null;

     if  (userOK)
          obj = new Sting  ("Test");

     if  (obj! = null)
     {

           //Hier den Code einfügen
      }
}

Sieht zwar nicht schön aus anet sollte sich so kompilieren lassen 🙂

LG
 
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.
 
Moin,
Jetzt schimpft aber mein Compiler, wenn ich nach dem if/else Block versuche mit diesem (in if instanziiertem) Objekt weiterzuarbeiten
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 😉

Gruß Klaus
 
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 ;-)

Danke nochmal!!
JavaXava
 
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.

Vg JavaXava
 
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.

Gruß
Luk
 
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?
 
Nach dem If/Else kann es ja vorkommen, dass es rüdiger nicht gibt, vielleicht möchtest du die Methode innerhalb der if aufrufen?
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();
                   ruediger.print();
                }else {
                  System.out.println("kein neues Objekt!");
               }
              
       }
}

ansonsten müsstest du erst prüfen, ob es rüdiger gibt...

also etwa

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();
                objekt ruediger = null;
                if (antwort.equals ("Ja")) {
                   ruediger = new objekt();                   
                }else {
                  System.out.println("kein neues Objekt!");
               }
              if (ruediger != null){
                  ruediger.print();
              }

       }
}
 

Zurück
Oben