the static method should be accessed is a static way

Hallo zusammen,

ich bekomme eine Fehlermeldung : "the static method rest should be accessed is a static way".
Bitte um Hilfe, bin noch ein totaler Anfänger :)

Java:
public class Essen {

  static int stueck;
  static double preis;

static int geld = 10;


Essen(int Stueck, double Preis){
  stueck= Stueck;
  preis=Preis;
}


public static double summe(int stueck, double preis) {
  return stueck * preis;
}


public static double rest(int geld, double summe) {
  return geld - summe(stueck, preis);
}



public static void main(String[] args) {
    
  Essen wurst = new Essen(1, 3.99);
  Essen ei = new Essen (3, 5.45);

  System.out.println(rest(geld, summe(stueck, preis)));

}
}
 
Versuche als Anfänger am besten, komplett auf das `static` Schlüsselwort überall zu verzichten (außer natürlich bei der `public static void main` Methode).
 
Hallo httdigest,

vielen Dank für Deine Antwort!
Habe "static" rausgelöscht.
Allerdings jetzt kriege ich eine Fehlermeldung:

cannot make a static reference to a non static field geld, stueck und preis

System.out.println(rest(geld, summe(stueck, preis)));





Code:
public class Essen {

    int stueck;
    double preis;
    int geld = 10;

    Essen(int Stuck, double Preis) {
        stueck = Stuck;
        preis = Preis;
    }

    public double summe(int stuck, double preis) {
        return stuck * preis;
    }

    public double rest(int geld, double summe) {
        return geld - summe(stueck, preis);
    }

    public static void main(String[] args) {

        Essen wurst = new Tier(1, 3.99);
        Essen ei = new Tier(3, 5.45);

        System.out.println(rest(geld, summe(stueck, preis)));

    }
}
 
ups sorry, mir ein Fehler bei Objekterstellung unterlaufen,

es soll natürlich sein:
Code:
 Essen wurst = new Essen(1, 3.99);
 Essen ei = new Essen(3, 5.45);
 
Ich glaube, du solltest erstmal darüber nachdenken, was dein Code eigentlich machen soll. So einiges ergibt wenig Sinn.
Dann müsstest du dich vielleicht nochmal über die Grundlagen von objektorientierter Programmierung informieren, z.B. was eigentlich Instanzvariablen sind.

Vielleicht wolltest du ja sowas machen:
Java:
public class Essen {
  private int stueck;
  private double preis;

  public Essen(int stueck, double preis) {
    this.stueck = stueck;
    this.preis = preis;
  }

  public double gesamtpreis() {
    return stueck * preis;
  }

  public static void main(String[] args) {
    Essen wurst = new Essen(1, 3.99);
    Essen ei = new Essen(3, 5.45);
    double geld = 50.0;
    geld -= wurst.gesamtpreis();
    geld -= ei.gesamtpreis();
    System.out.println(String.format("%.2f", geld));
  }
}
 
vielen Dank für die Hilfe! Zur double Ausgabe als String bin ich noch nicht gekommen. Jetzt weiß ich Bescheid. Es war die erste Methode Übung, die ich gewagt hatte ;)
 
Vielleicht meint er auch so wat (generell ist es nicht gut, static zu verwenden): (auch wenn ich das hin und wieder der Einfachheit halber mal verwende :D)
Java:
import java.text.NumberFormat;
import java.util.Locale;

public class Essen {

	static float summe = 0f;

	static void addToSum(Essen e, int stuecke) {
		summe += e.getGesamtpreis(stuecke);
	}

	int stuecke;
	int preis;

	Essen(int stuecke, int preis) {
		super();
		this.stuecke = stuecke;
		this.preis = preis;
	}

	void setStuecke(int stuecke) {
		this.stuecke = stuecke;
	}

	void setPreis(int preis) {
		this.preis = preis;
	}

	float getEinzelpreis() {
		return (float) preis / stuecke;
	}

	float getGesamtpreis(int stuecke) {
		return getEinzelpreis() * stuecke;
	}

	public static void main(String[] args) {
		Essen wurst = new Essen(1, 399);
		Essen ei = new Essen(3, 545);
		Essen.addToSum(wurst, 1);
		Essen.addToSum(ei, 6);
		NumberFormat f = NumberFormat.getCurrencyInstance(Locale.GERMANY);
		System.out.println(f.format(Essen.summe / 100f));
	}

}

14,89 €
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben