BlueJ Kino Montag-Sonntag

babuschka

Top Contributor
Ich möchte ein Programm mit einer Klasse erstellen, diese wäre bsplw. Kino .
Nun soll es 7 Objekte geben, welche für die Tage Montag-Sonntag stehen.
Wenn man auf diese Objekte geht, soll der Preis, Laufzeit,Raum,... angezeigt werden..
Also generell handelt es sich um ein einfaches Programm, allerdingts habe ich fast gar keine Java Kenntnisse..
Ich bin mir überhaupt nicht sicher, ob das Versuchte einen Sinn ergibt ???:L
Danke.. :)

(Dort wo der Smiley steht, zeigt es 'falsch' an)

Java:
public class Kino
//Variablen
{   private double preis;
    private double laufzeit;
    private int raum;
    private string wochentag;
    private boolean dreid;
}

public Kino (double preis, double laufzeit, int raum, string wochentag, boolean dreid) :autsch:
{ //Konstruktor
this.preis = preis
this.laufzeit = laufzeit
this.raum = raum
this.wochentag = wochentag
this.dreid = dreid
}


object public Montag
{   private double film= "Film1";
    private double preis= 5.00;
    private double laufzeit= 120;
    private int raum= 1;
    private boolean dreid= "nein";
}

object public Dienstag
{   private double film= "Film1";
    private double preis= 5.00;
    private double laufzeit= 120;
    private int raum= 2;
    private boolean dreid= "nein";
}

object public Mittwoch
{   private double film= "Film3";
    private double preis= 5.00;
    private double laufzeit= 160;
    private int raum= 3;
    private boolean dreid= "nein";
}

object public Donnerstag
{   private double film= "Film1";
    private double preis= 5.00;
    private double laufzeit= 120;
    private int raum= 1;
    private boolean dreid= "nein";
}

object public Freitag
{   private double film= "Film1";
    private double preis= 5.00;
    private double laufzeit= 120;
    private int raum= 1;
    private boolean dreid= "nein";
}

object public Samstag
{   private double film= "Film1";
    private double preis= 5.00;
    private double laufzeit= 120;
    private int raum= 1;
    private boolean dreid= "nein";
}

object public Sonntag
{   private double film= "Film1";
    private double preis= 5.00;
    private double laufzeit= 120;
    private int raum= 1;
    private boolean dreid= "nein";
}
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
Die Syntax ist vollkommen falsch, so schreibt man keine Java Programme.
- Die erste schließende Klammer schließt schon deine Klasse
- String ist ne Klasse, die schreibt sich groß.
- im Konstruktor fehlen die Semikolons.
-
Code:
object public Sonntag
ist ungültige Java Syntax.

Ich bin mir überhaupt nicht sicher, ob das Versuchte einen Sinn ergibt
Naja, so erstmal nicht. Schau dir vielleicht bevor du anfängst nochmal die Grundlagen an.
 

babuschka

Top Contributor
ok, danke schonmal :)
ich versuchs nochmal etwas anders zu machen. aber ich muss es bis donnerstag fertig haben, dass werd ich bestimmt nicht richtig hinkriegen..
 

babuschka

Top Contributor
Kann mir denn vll. einer sagen, ob der anfang richtig ist& wie ich danach weitermachen muss..

Java:
public class Kino
{
 private double preis;
 private double laufzeit;
 private int raum;
 private string wochentag;
 private boolean dreid;

public Kino (double preis,double laufzeit, int raum, string wochentag, boolean dreid)
{ 
 this.preis = preis;
 this.laufzeit = laufzeit;
 this.raum = raum;
 this.wochentag = wochentag;
 this.dreid = dreid;
}
 
Zuletzt bearbeitet von einem Moderator:

XHelp

Top Contributor
Ist immer noch falsch, da alles kleingeschrieben ist (auch string)
Und verwende doch bitte die Java-Tag, wie es eigentlich in UNÜBERSEHBARER SCHRIFT auf der Seite steht.
 

Plopo

Bekanntes Mitglied
So sollte es richtig sein.
Java:
public class Kino
{
   private double preis;
   private double laufzeit;
   private int raum;
   private String wochentag; //Wie oft schon gesagt. "String" mit einem GROßEM "S"
   private boolean dreid;

   //Wie oft schon gesagt. "String" mit einem GROßEM "S"
   public Kino (double preis,double laufzeit, int raum, String wochentag, boolean dreid)
   {
      this.preis = preis;
      this.laufzeit = laufzeit;
      this.raum = raum;
      this.wochentag = wochentag;
      this.dreid = dreid;
   } 
} //Hier fehlte die schließende Klammer der Klasse

PS: Gewöhne dir bitte eine passende Formatierung an (Zeilen einrücken), damit es übersichtlicher wird.
PPS: BlueJ ist dumm :D
 
Zuletzt bearbeitet:

pg1337

Bekanntes Mitglied
Jetzt solltest du dir Gedanken über die Methoden machen.. wenn du sagst dass der Preis wieder gegeben werden soll etc..:

Java:
public int getPreis()
{ return preis; }

sowie die anderen Sachen auch so zuschreiben...


Danach in deiner Main methode noch das Objekt erzeugen und die Methode aufrufen:

Java:
Kino cinema= new Kino();
cinema.getPreis();

musst noch anpassen, aber so vom Prinzip her
 
Zuletzt bearbeitet:

babuschka

Top Contributor
Wenn ich das jetzt aber so mache und auf Compile gehe, wird die erste Zeile gelb markiert.. was ist denn daran jetzt falsch?

Java:
public double getPreis()
{ return preis; }

public double getLaufzeit()
{ return laufzeit; }

public int getRaum()
{ return raum; }

public String getWochentag()
{ return wochentag; }
 

babuschka

Top Contributor
Da kommt vor diesem double so'n roter Strich und unten steht "class, interface, or enum expected". Also insgesammt sieht es jetzt so aus.. Ich weiß, ich stell mich ziemlich blöd an :D..

Java:
public class Kino
{
   private double preis;
   private double laufzeit;
   private int raum;
   private String wochentag; 
   
 
   public Kino (double preis,double laufzeit, int raum, String wochentag)
   {
      this.preis = preis;
      this.laufzeit = laufzeit;
      this.raum = raum;
      this.wochentag = wochentag;
   } 
}

public double getPreis()
{ return preis; }

public double getLaufzeit()
{ return laufzeit; }

public int getRaum()
{ return raum; }

public String getWochentag()
{ return wochentag; }
 
Zuletzt bearbeitet von einem Moderator:

Plopo

Bekanntes Mitglied
Poste doch mal deinen KOMPLETTEN Code hier.
Die einzelnen Methoden sind sweit richtig (Wenn der "return-Wert" auch vom Typ "double" ist).

Und BITTE nutze die JAVA-Code-Tags!
[noparse]
Java:
Hier Code rein
[/noparse]
 

Plopo

Bekanntes Mitglied
In Zeile 16 muss die Klammer weg, diese schließt vorzeitig die Klasse, weshalb die unteren Methoden nicht mehr funktionieren.

Dafür musst du dann eine neue Klammer ganz ans Ende machen und damit die Klasse schließen

Sprich es sollte so aussehen

Java:
public class Kino
{
   private double preis;
   private double laufzeit;
   private int raum;
   private String wochentag; 
   
 
   public Kino (double preis,double laufzeit, int raum, String wochentag)
   {
      this.preis = preis;
      this.laufzeit = laufzeit;
      this.raum = raum;
      this.wochentag = wochentag;
   } 
} //Diese Klammer löschen
 
public double getPreis()
{ return preis; }
 
public double getLaufzeit()
{ return laufzeit; }
 
public int getRaum()
{ return raum; }
 
public String getWochentag()
{ return wochentag; }

} //Diese Klammer einfügen
 

babuschka

Top Contributor
Danke, jetzt geht das auch mit den Objekten.
Jedoch soll ich es jetzt eigtl. noch so machen, dass, wenn es ein 3D Film ist noch 3€ Preisaufschlag gibt. Da die Programmierung sonst zu einfach wäre.. Wie muss ich das denn jetzt machen..
 

Plopo

Bekanntes Mitglied
Naja, erstelle einfach eine weitere Variable wo die Art des Filmes drinne steht.
Fals der Film 3D ist, rechnest du einfach die 3Euro drauf.
 

babuschka

Top Contributor
Jetzt sollte man noch eine Setter Methode einbauen. Ich habe mir gedacht, dass man vll. angeben kann, ob man z.B. einen VIP Sitzplatz haben möchte. Wenn ja soll sich der Preis um 3€ erhöhen. Wie kann man das denn jetzt machen?
 

pro2

Bekanntes Mitglied
Jetzt sollte man noch eine Setter Methode einbauen. Ich habe mir gedacht, dass man vll. angeben kann, ob man z.B. einen VIP Sitzplatz haben möchte. Wenn ja soll sich der Preis um 3€ erhöhen. Wie kann man das denn jetzt machen?

Der Methode etwas mitgeben und darauf prüfen.
Zum Beispiel:

Java:
public void setPreis(boolean vip, double preis){ 
    if(vip){
        this.preis = preis + 3;
    } else{
        this.preis = preis;
    }
}

Du gibst deiner Methode den Preis und eine VIP Variable. Letztere ist entweder true oder false. Dann schaust du, ist sie wahr und setzt demnach den Preis.
 

babuschka

Top Contributor
Mh ja. Aber kann man das nicht auch so i.wie machen, dass wenn man bei vip "ja" eingibt der preis dann +3 und ansonsten der normale preis? so i.wie:


Java:
public void setPreis(boolean vip, double preis){
    if (vip) = "ja"{
        this.preis = preis + 3;
    } else{
        this.preis = preis;
    }
}}
 

pro2

Bekanntes Mitglied
Der Vergleichsoperator ist ==, = ist eine Zuweisung. Klar kannst du das machen.. die if Klausel bleibt aber in der Klammer.

Java:
public void setPreis(String vip, double preis){ 
    if(vip.equals("ja")){
        this.preis = preis + 3;
    } else{
        this.preis = preis;
    }
}

Ist aber a) unnötiger Speicherverbrauch, b) viel Fehleranfälliger und c) das gleiche in Grün mit mehr, denn jetzt rufst du die .equals() Funktion vom String auf und die gibt dir wieder einen boolean zurück je nachdem ob es übereinstimmt oder nicht.
 

babuschka

Top Contributor
Ok, bei boolean geht ja nur true oder false. Aber i.wie ändert sich der preis dann nicht, wenn ich true eingebe..


Java:
public void setPreis(boolean vip, double preis){ 
    if (vip = true)
        preis = preis + 3;
     else{
        preis = preis;
    }
}}
 
Zuletzt bearbeitet von einem Moderator:

pro2

Bekanntes Mitglied
Ne,
Code:
==
wäre schlicht und einfach falsch. Das mit dem Speicher habe ich aber nicht verstanden.

Das war darauf bezogen, dass man letztendlich wieder auf einen boolean prüft, was man auch einfacher tun könnte. Also im Prinzip auf die ganze Aktion, nicht auf den Vergleichsoperator. Und wegen dem Speicher: Ein String verbraucht ja mehr als ein einfacher boolean, oder nicht?
 

babuschka

Top Contributor
So es geht ja jetzt, wenn ich true eingebe, dass der preis + 3 berrechnet wird, aber wenn ich dann wieder false eingebe bleibt er auch so und zieht die 3 nicht wieder ab. Was muss ich verändern?

Java:
public void setvip(boolean vip){ 
    if (vip == false)
       preis = preis;
     else if (vip == true)
        preis = preis + 3;
        
    }
 
M

Marcinek

Gast
Fachlich ist die Methode ein desaster.

Wenn du nun 3 mal hintereinander set VIP machst, dann hast du 9 Preis höher

Aber bei setVIP false passiert nüx. Dann müsste man folgerichtig hier 3 abziehen und dann aufpassen, wieviel man da false und true setzt.

== > geht nicht.

Du musst dir merken ob vip true oder false und dann bei getPreis dadrauf reagieren.
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Oben