1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Grundlegendes Problem mit Java

  • By_Myslf
  • 3. März 2010 um 19:35
  • Unerledigt
  • By_Myslf
    1
    By_Myslf
    Gast
    • 3. März 2010 um 19:35
    • #1

    Ich programmiere seit kurzer Zeit in Java. Doch nun habe ich bei einer Aufgabe ein Problem:

    Ich habe ein Objekt Gefaess mit den Attributen Volumen und Füllhöhe erstellt und es soll die Methoden leeren und füllen jeweils mit und ohne Parameter geben. Nun will ich dafür jedoch einen Konstruktor verwenden und da entsteht mein Problem: Wenn man den Konstruktor in die main-Methode einbaut und dann fuellen ausführt, rutscht der immer in den else teil der if abfrage, obwohl er eigentlich den ersten Teil ausführen müsste.

    Code
    public class Gefaess {
    
    
    private static int volumen;
    private static int  fuellstand;
    
    
      public static void Gefaess(){
         volumen =  1000;
         fuellstand = 0;
      }
      public static void Gefaess(int  wert){
         volumen = wert;
         fuellstand = 0;
      }
      public static  void fuellen() {
        fuellstand = volumen;
        System.out.println("Der  Füllstand beträgt " + fuellstand);
      }
      public static void leeren()  {
        fuellstand = 0;
        System.out.println("Der Füllstand beträgt " +  fuellstand);
      }
      public static void fuellen(int a) {
       [COLOR=Red] if(volumen  >= a){
          fuellstand = fuellstand + a;
          System.out.println("Der  Füllstand beträgt " + fuellstand);
        }
        else {
           System.out.println("Error füllen");
        }[/COLOR]
      }
      public static void  leeren(int b){
        if(fuellstand >= b){
          fuellstand = fuellstand -  b;
          System.out.println("Der Füllstand beträgt " + fuellstand);
        }  else {
          System.out.println("Error leeren");
        }
      }
      public  static void main(String[] args) {
      Gefaess dose = new Gefaess();
       dose.fuellen(100);
      }
    }
    Alles anzeigen



    Ich hab den Fehler mal rot markiert. Der Attributwert für das volumen geht immer auf 0. Deswegen der Error. Hat einer eine Lösung dafür? Bräuchte die bis freitag. Wär nett wenn sich einer bemüht.

    Danke schon im Vorraus.

  • BayK
    3
    BayK
    Mitglied
    Reaktionen
    1
    Punkte
    46
    Beiträge
    8
    • 3. März 2010 um 19:41
    • #2

    attributvariablen eines Objekts sollten nicht static sein

    edit: Konstruktoren und Funktionen eines Objekts auch nicht

    In a world without walls and fences , who needs windows and gates.:hewa:

  • sutupud
    13
    sutupud
    Mitglied
    Reaktionen
    59
    Punkte
    1.659
    Beiträge
    320
    • 3. März 2010 um 19:47
    • #3

    achtung: bei dir ist alles statisch. statische methoden und felder gehören zur klasse selbst und sind unabhängig von den erzeugten objekten.
    das einzige, was bei dir statisch sein muss ist die main-methode.
    und der konstruktor darf keinen returnwert haben, du defninierst hier also eine methode mit dem namen des konstruktors und keinen konstruktor.
    außerdem: wenn schon was im gefäß ist, muss das auch berücksichtigt werden.
    also:

    PHP
    public class Gefaess {
    
    
    private int volumen;
    private int fuellstand;
    
    
      public Gefaess(){
         volumen =  1000;
         fuellstand = 0;
      }
      public Gefaess(int  wert){
         volumen = wert;
         fuellstand = 0;
      }
    
    
      public void fuellen() {
        fuellstand = volumen;
        System.out.println("Der  Füllstand beträgt " + fuellstand);
      }
      public void leeren()  {
        fuellstand = 0;
        System.out.println("Der Füllstand beträgt " +  fuellstand);
      }
      public void fuellen(int a) {
        if(volumen  >= fuellstand + a){
          fuellstand = fuellstand + a;
          System.out.println("Der  Füllstand beträgt " + fuellstand);
        }
        else {
           System.out.println("Error füllen");
        }
      }
      public void  leeren(int b){
        if(fuellstand >= b){
          fuellstand = fuellstand -  b;
          System.out.println("Der Füllstand beträgt " + fuellstand);
        }  else {
          System.out.println("Error leeren");
        }
      }
      public static void main(String[] args) {
      Gefaess dose = new Gefaess();
       dose.fuellen(100);
      }
    }
    Alles anzeigen

    "All through my life I've had this strange unaccountable feeling that something was going on in the world, something big, even sinister, and no one would tell me what it was."
    "No," said the old man, "that's just perfectly normal paranoia. Everyone in the Universe has that."

    😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😒😓😔😖😘😚😜😞😠😡😢😣😥😨😩😪😫😭😰😱😲😳😵😶😷

  • Blutsturz
    12
    Blutsturz
    Mitglied
    Reaktionen
    21
    Punkte
    1.351
    Beiträge
    261
    • 3. März 2010 um 23:01
    • #4
    Zitat von By_Myslf

    Nun will ich dafür jedoch einen Konstruktor verwenden...

    tust du aber nicht, das solltest du schon allein daran erkennen, dass ein Konstruktor so heisst wie die Klasse selbst, erzeugt ("instanziert") diese "Methode" doch ein Objekt eben dieser Klasse...

    Konstruktoren in der Klasse "Gefaess" können also nur so aussehen:

    public Gefaess( <Argumente> ) {
    ...
    }

    noch ein paar kleinigkeiten:

    1) verwende wenn möglich englische bezeichner für variablen und methoden
    2) nach Konvention verwendet man sogenannte setter/getter-Methoden um Objektattribute zu verändern

    ..wie/wo hast du programmieren gelernt, wenn ich fragen darf? vielleicht schaust du mal da vorbei:

    http://openbook.galileocomputing.de/javainsel8/javainsel_00_001.htm

    und ziehst dir kapitel 6 nochmal rein...

    "There's no such thing as Computer Science-it's witchcraft", math department of MIT, 1961

    You are all children of a worthless god!

    Einmal editiert, zuletzt von Blutsturz (3. März 2010 um 23:06)

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung