[Progra] Übungsblatt

[Progra] Programmierung
[DSAL] Datenstrukturen und Algorithmen
[SWT] Softwaretechnik
[DB] Datenbanken und Informationssysteme

Übungsblatt

Beitragvon bunower » 24.11.08 17:35

Hallo,
ich bekomme andauernd eine fehlermeldung in java aber weiss nicht warum,
vielleicht könnt ihr mir helfen,
code:
=============================================
public boolean giessen(int menge) {
typ[1]=typ[1]+menge; //status+menge
if (typ[1]>typ[2]){ //wenn status grösserals max.vol dann tot
return false;
}else
return true;

}
public boolean verbraucheWasser() {
typ[1]=typ[1]-typ[3];
if (typ[1]<=0){
return false;
}else
return true;
}
=============================================
die fehlermeldung istfolgende:
=============================================
bluemchen.java:66: class, interface, or enum expected
public boolean giessen(int menge) {
^
bluemchen.java:68: class, interface, or enum expected
if (typ[1]>typ[2]){ //wenn status gr÷s
t
^
bluemchen.java:70: class, interface, or enum expected
}else
^
bluemchen.java:73: class, interface, or enum expected
}
^
bluemchen.java:81: class, interface, or enum expected
public boolean verbraucheWasser() {
^
bluemchen.java:83: class, interface, or enum expected
if (typ[1]<=0){
^
bluemchen.java:85: class, interface, or enum expected
}else
^
bluemchen.java:87: class, interface, or enum expected
}
===========================================
hoffe könnt mir helfen,
danke
Benutzeravatar
bunower
 
Beiträge: 130
Registriert: 07.10.08 17:34
Studiengang: Informatik (B.Sc.)
Studiert seit: WS 09/10
Anwendungsfach: BWL

Beitragvon Coolcat » 24.11.08 18:17

Du hast die Methoden einfach nur so in eine Datei geschrieben. Du musst sie in eine Klasse verpacken:

Code: Alles auswählen
public class Bluemchen {
   public boolean giessen(int menge) {
      typ[1]=typ[1]+menge; //status+menge
      if (typ[1]>typ[2]) { //wenn status grösserals max.vol dann tot
         return false;
      }
      else {
         return true;
      }
   }

   public boolean verbraucheWasser() {
      typ[1]=typ[1]-typ[3];
      if (typ[1]<=0) {
         return false;
      }
      else {
         return true;
      }
   }
}


Ich habe mir mal erlaubt das einzurücken und ein paar Klammern mehr zu setzen. So sinnfrei dir das jetzt auch vorkommen mag, das solltest du dir von anfang an angewöhnen. So kann man viel besser und schneller erfassen was der Quellcode macht. Außerdem hier im Forum bitte den CODE-Tag benutzen.
My software never has bugs. It just develops random features.
Benutzeravatar
Coolcat
Promoter
 
Beiträge: 2574
Registriert: 28.11.05 21:26
Wohnort: Kohlscheid / Düsseldorf
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: BWL

Beitragvon bunower » 24.11.08 18:22

ja ich rücke ja auch ein aber ich hab es einfach reinkopiert und deshalb ist es nicht eingerückt erschienen.
Aber sory ich habe gerade den unterschied nicht bemerkt und was mein fehler war nicht genau verstanden kannst du den unterschied mal in rot markieren oder in einer aderen farbe,
danke
Benutzeravatar
bunower
 
Beiträge: 130
Registriert: 07.10.08 17:34
Studiengang: Informatik (B.Sc.)
Studiert seit: WS 09/10
Anwendungsfach: BWL

Beitragvon Eshmael » 24.11.08 18:25

Coolcat hat geschrieben:Du hast die Methoden einfach nur so in eine Datei geschrieben. Du musst sie in eine Klasse verpacken:

Code: Alles auswählen
[color=red]public class Bluemchen {[/color]
   public boolean giessen(int menge) {
      typ[1]=typ[1]+menge; //status+menge
      if (typ[1]>typ[2]) { //wenn status grösserals max.vol dann tot
         return false;
      }
      else {
         return true;
      }
   }

   public boolean verbraucheWasser() {
      typ[1]=typ[1]-typ[3];
      if (typ[1]<=0) {
         return false;
      }
      else {
         return true;
      }
   }
[color=red]}[/color]

Benutzeravatar
Eshmael
 
Beiträge: 517
Registriert: 18.10.07 08:23

Beitragvon bunower » 24.11.08 19:17

eigentlich siehts beimri nicht viel anders aus wenn ich mein ganzen code oder klasse betrachete
Code: Alles auswählen
public class Bluemchen {
    public static int TYPEN = 4;
   int menge = 12;
   int n=0;
   String ausgabe = " ";
   boolean giessen=true;
   boolean verbraucheWasser=true;

    public Bluemchen(int typDerBlume) {

       if(typDerBlume==0){
            int [] typ = {0,21,40,7};
       }else if(typDerBlume==1){
            int [] typ = {1,18,20,6};
       }else if (typDerBlume==2){
            int [] typ = {2,12,25,4};
       }else if(typDerBlume==3){
            int [] typ = {3,15,32,5};
       }else {
            int [] typ = {0,21,40,7};
       }
      
    }
    public String toString() {
      return ausgabe = " "+"Typ: "+typ[0]+" Status: "+typ[1]+" max.VOl.: "+typ[2]+" Verbrauch: "+typ[3];
       }
       
    }

    public boolean giessen(int menge) {
      typ[1]=typ[1]+menge;   //status+menge
      if (typ[1]>typ[2]){   
         return false;
      }else
         return true;
       
    }
    public boolean verbraucheWasser() {
       typ[1]=typ[1]-typ[3];
      if (typ[1]<=0){
      return false;
      }else
         return true;
    }
}

ist ka auch eingetlich so wie du es gemacht hast oder sehe ich da etwas nicht richtig ?
Benutzeravatar
bunower
 
Beiträge: 130
Registriert: 07.10.08 17:34
Studiengang: Informatik (B.Sc.)
Studiert seit: WS 09/10
Anwendungsfach: BWL

Beitragvon mirko » 24.11.08 19:46

tipp: zähl mal die öffnenden und die schließenden geschweiften klammern...
mirko
 
Beiträge: 1032
Registriert: 22.10.06 18:33
Studiert seit: WS 12/13

Beitragvon bunower » 24.11.08 19:48

ja danke hab den fehler gefunden und zwar
Code: Alles auswählen
public String toString() {
      return ausgabe = " "+"Typ: "+typ[0]+" Status: "+typ[1]+" max.VOl.: "+typ[2]+" Verbrauch: "+typ[3];
       }
       
    }

ist hier eine klammer zuviel :D
Benutzeravatar
bunower
 
Beiträge: 130
Registriert: 07.10.08 17:34
Studiengang: Informatik (B.Sc.)
Studiert seit: WS 09/10
Anwendungsfach: BWL

Beitragvon C-Otto » 24.11.08 19:50

Nach toString machst du eine Klammer zu viel zu. Zur Fehlervermeidung helfen hier eine vernuenftige Einrueckung und ein Editor, der beim Einruecken hilft bzw. Klammern "zaehlen" kann.

PS: Arrays sind nicht wirklich gut, um die Eigenschaften zu repraesentieren.

Ciao,
Carsten
Dr. rer. nat. Carsten Otto
http://verify.rwth-aachen.de/otto/
Benutzeravatar
C-Otto
 
Beiträge: 568
Registriert: 10.08.06 00:20
Wohnort: Schwalbach am Taunus
Studiert seit: fertig
Anwendungsfach: BWL

Beitragvon bunower » 24.11.08 19:54

was würdest du vorschlagen denn wir dürfen keine zusätzlichen klassen oder objekte hinzufügen.
ich benutze programmers notepad kann das nicht zählen?
ich will sowas wie eclipse vermeiden zumal da sie sehr umfangreich sind und zum anderen ich erst mal lernen will ohne grössere hilfen zu programmieren.
Benutzeravatar
bunower
 
Beiträge: 130
Registriert: 07.10.08 17:34
Studiengang: Informatik (B.Sc.)
Studiert seit: WS 09/10
Anwendungsfach: BWL

Beitragvon C-Otto » 24.11.08 19:56

Du brauchst keine zusaetzlichen Klassen bzw. Objekte. Im Nachbarthread wird aber ueber ein Konstrukt geredet, was recht gut zum Speichern von Informationen ist. Genaugenommen benutzt du es schon, nur nicht gut genug :)
EDIT: Nein, du benutzt es nicht. An dem Punkt musst du noch was nachholen.

Zum Editor: Kenne ich nicht, keine Ahnung. Ich nehme vim bzw. Eclipse und bin sehr zufrieden. Ansonsten gibt es noch emacs und kedit, auf der Homepage koennte auch noch etwas stehen.
Dr. rer. nat. Carsten Otto
http://verify.rwth-aachen.de/otto/
Benutzeravatar
C-Otto
 
Beiträge: 568
Registriert: 10.08.06 00:20
Wohnort: Schwalbach am Taunus
Studiert seit: fertig
Anwendungsfach: BWL

Beitragvon bunower » 24.11.08 20:03

was genau meinst du im "Nachbarthread".
Und ausserdem habe eh einige verständnis probleme mit diesem program, denn:
Code: Alles auswählen
 /**
     * Hier steht, wie viele unterschiedliche Typen es gibt,
     * damit die Zufallsauswahl sinnvoll funktioniert.
     */
public static int TYPEN = 4;

soll ich nun eine zufallsmethode hier reinschreiben in der die blumen erzeugt werden oder wieso ist dieses TYPEN = 4 vorausgesetzt, denn es steht noch im weiteren verlauf noch dass wenn eine ungueltige eingabe gemacht wird soll der typ0 erzeugt werden,
aber wenn ich einen solche generator nutze kann nicht eine ungueltige eingabe erzeugt werden
n=Zufall.zufallstzahl(TYPEN);
hier wird ja eh nur 0-3 generiert oder sehe ich etwas falsch
Benutzeravatar
bunower
 
Beiträge: 130
Registriert: 07.10.08 17:34
Studiengang: Informatik (B.Sc.)
Studiert seit: WS 09/10
Anwendungsfach: BWL

Beitragvon mirko » 24.11.08 20:10

es gibt 4 versciedene typen - die anzahl der typen kann wohl nur im quelltext angepasst werden - mit eingaben sind i.a. benutzereingaben, nicht ergebnisse von zufallsgeneratoren gemeint - musst du denn sonst noch was vom benutzer einlesen?
mirko
 
Beiträge: 1032
Registriert: 22.10.06 18:33
Studiert seit: WS 12/13

Beitragvon bunower » 24.11.08 20:12

nein eigentlich ist die schon ein fertiges programm, nur ich muss ein paar zeilen selbst hinzufügen, aber mir ist keine stelle aufgefallen wo man etwas einlesen müsste oder ich übersehe andauernd etwas(das kann natürlich auch sein, wenn schon seit 5 stunden davor sitzt :D)
Benutzeravatar
bunower
 
Beiträge: 130
Registriert: 07.10.08 17:34
Studiengang: Informatik (B.Sc.)
Studiert seit: WS 09/10
Anwendungsfach: BWL

Beitragvon C-Otto » 24.11.08 20:14

Der Nachbarthread ist hier im Forum zu finden und nennt sich "[Progra] unterschied zwischen static und nicht static".

Du sollst den Konstruktor vervollstaendigen, so dass dieser fuer die Werte 0 bis 3 (also 4 verschiedene) entsprechende Bluemchen erzeugt. Wo und wann dieser Konstruktor aufgerufen wird, hat an der Stelle der Aufgabe keine Bedeutung.

Du siehst es richtig, dass im kompletten Programm keine ungueltige Eingabe erzeugt wird. Trotzdem kann es nicht schaden, entsprechende Eingaben abzufangen.

PS: Solche Fragen sollte man nicht wenige Stunden vor der Abgabe klaeren.

Ciao,
Carsten
Dr. rer. nat. Carsten Otto
http://verify.rwth-aachen.de/otto/
Benutzeravatar
C-Otto
 
Beiträge: 568
Registriert: 10.08.06 00:20
Wohnort: Schwalbach am Taunus
Studiert seit: fertig
Anwendungsfach: BWL

Beitragvon C-Otto » 24.11.08 20:16

bunower hat geschrieben:n=Zufall.zufallstzahl(TYPEN);
hier wird ja eh nur 0-3 generiert oder sehe ich etwas falsch


Die Klasse Zufall.java liefert dir nur Zufallszahlen zwischen 1 und x, wenn du die Methode mit Parameter x aufrufst.
Dr. rer. nat. Carsten Otto
http://verify.rwth-aachen.de/otto/
Benutzeravatar
C-Otto
 
Beiträge: 568
Registriert: 10.08.06 00:20
Wohnort: Schwalbach am Taunus
Studiert seit: fertig
Anwendungsfach: BWL

Nächste

Zurück zu Praktische Informatik