Konstanten zu einfachen Berechnungen unterhalb Main Methode

Status
Nicht offen für weitere Antworten.

Cerberus81

Mitglied
Hallo zusammen.

Ich stehe grad vor folgendem Problem: Laut Aufgabenstellung sollen die Werte für eine Biogsanlage berechnet werden, die ein Bauer sich anschafft. In der Aufgabe heißt es unter anderem:


Zunächst soll berechnet werden, mit wie viel Kubikmetern Biogas pro Jahr durchschnittlich gerechnet werden kann.
a) Definieren Sie ganz oben, nach class {, d.h. nicht in main(), Konstante für die angegebenen Werte.

Und dann:

Hinweis: Konstante werden mit den Schlüsselworten "static final" gekennzeichnet.
Beispiel: static final double GVE_in_kg = 500;

b) Für jede einzelne Berechnung (Formel, Gleichung) definieren und dokumentieren Sie eine Funktion.

Ich habe mit Konstanten zuvor noch nicht gearbeitet, und habe jetzt ersteinmal testweise GVE_in_kg und GVE_in_kg_insgesamt versucht anzulegen, und über die main Methode aufzurufen.

Allerdings versinke ich dabei in Fehlermeldungen. Was ich bisher geschrieben habe, sieht folgendermaßen aus:

class main {

public static void main(String args[]) {


Berechnung(GVE_in_kg, GVE_in_kg_insgesamt);


}

static void Berechnung(double GVE_in_kg, double GVE_in_kg_insgesamt) {

static final double GVE_in_kg = 500;
static final double GVE_in_kg_insgesamt = 31231;


double Berechnung [] [] = new double [GVE_in_kg] [GVE_in_kg_insgesamt];



System.out.println(GVE_in_kg);
System.out.println(GVE_in_kg_insgesamt);


}
}


Vermutlich mache ich da noch ziemlich viel falsch. Ich habe jetzt eine Stunde lang immer wieder alles mögliche geändert, aber irgendwie komme ich auf keinen grünen Zweig. Hat jemand vielleicht einen Tipp für mich, wo ich da generell Murks mache?
 

hdi

Top Contributor
Konstanten können nicht innerhalb von Methoden definiert werden. Du musst sie in die Klasse schreiben, so wie es in der Angabe stand: nach dem Öffnen der Klasse:

Java:
class main{
    // hier die Konstanten
    // hier Methoden, zB main() usw
}

Ansonsten ist da noch so einiges "unschön", vorallem die Namenskonventionen. Ich find's schon krass dass in der Angabe etwas von "GVE_in_kg" steht, denn das verstösst gegen die Namenskonvention von Konstanten. Das sollte alles groß geschrieben werden, also "GVE_IN_KG".
 

Cerberus81

Mitglied
Vielen Dank erst einmal.
Ich habe es jetzt folgendermaßen geändert:

class main {

static void Berechnung(double GVE_in_kg, double GVE_in_kg_insgesamt);

static final double GVE_in_kg = 500;
static final double GVE_in_kg_insgesamt = 31231;


double Berechnung [] [] = new double [GVE_in_kg] [GVE_in_kg_insgesamt];



public static void main(String args[]) {


Berechnung(GVE_in_kg, GVE_in_kg_insgesamt);


}



System.out.println(Berechnung);
//System.out.println(GVE_in_kg_insgesamt);


}


Nun erhalte ich nur noch zwei Fehlermeldungen (identifier expected). Kann ich das so mit der "Berechnung" denn überhaupt machen?
 

hdi

Top Contributor
edit: falscher Link sry...
Ich glaube du weisst nicht so ganz was Methoden sind:das hier lesen.

PS: Code bitte fortan in Java Code Tags packen. Das ist das Kaffee-Tassen-Symbol im Editor.
 
Zuletzt bearbeitet:

Cerberus81

Mitglied
Okay, also ich verstehe Methoden einfach als abrufbare Programmteile, die man anlegt, damit sie im einzelnen nicht immer wieder neu schreiben muss. Nun würde ich ja einfach gerne ein Array Berechnung definieren, in dem beide Werte stehen, und das über die main Klasse aufgerufen werden kann.


Java:
class main {


	static final int GVE_in_kg = 500; 
	static final int GVE_in_kg_insgesamt = 31231; 


public static void main(String args[]) {


	berechnung(GVE_in_kg, GVE_in_kg_insgesamt);

	}

		static void berechnung(int GVE_in_kg, int GVE_in_kg_insgesamt) {

		int berechnung [] [] = new int [GVE_in_kg] [GVE_in_kg_insgesamt];

			System.out.print(GVE_in_kg);

		
	}

}

Weil, auf diese Art bekomme ich ja nur einen einzelnen Wert. Ich hätte aber gerne beide Werte des Arrays berechnung angezeigt. Also, nur testweise. Gerechnet wird da ja im Moment noch nichts. Und das bekomme ich einfach nicht hin.
 

hdi

Top Contributor
naja print() ist eine Methode des Objektes out der Klasse System. Du hast ja schon richtig verstanden, was Methoden sind. Sie nehmen Parameter und machen damit was. Wenn du beide Werte ausgeben willst, musst du die Methode halt zweimal aufrufen:

Java:
System.out.println(GVE_in_kg); // println() ist so wie print(), aber macht einen Zeilenwechsel danach
System.out.println(GVE_in_kg_insgesamt);

oder kurz:

Java:
System.out.print(GVE_in_kg + " " + GVE_in_kg_insgesamt);

Aber jetzt nicht denken, dass man mit dem "+" beliebige Parameter in eine Methode geben kann. Was hier passiert ist lediglich dass du aus beiden ints einen String machst, in dem die verkettet sind. Du rufst also in letzterem Code die Methode print mit einem String auf. Das geht weil die ist "überladen", d.h. die gibt es für String, für int, double usw.
 

Cerberus81

Mitglied
Vielen Dank noch einmal für deine sehr ausführliche Hilfe. Als ich mir gerade noch einmal alles in Ruhe durchgelesen habe, ist es mir auch klar geworden. Wenn ich vielleicht noch eine Frage stellen darf:

Um nun mit der Berechnung anzufangen, muss ich von int auf double wechseln, da es sich um Fließkommazahlen handelt.
Schreibe ich es also nun folgendermaßen:

Java:
class main {


	static final double GVE_in_kg = 500; 
	static final double GVE_in_kg_insgesamt = 31231; 


public static void main(String args[]) {


	berechnung(GVE_in_kg, GVE_in_kg_insgesamt);

	}

		static void berechnung(double GVE_in_kg, double GVE_in_kg_insgesamt) {

		double berechnung [] [] = new double [GVE_in_kg] [GVE_in_kg_insgesamt];

	
			System.out.println(GVE_in_kg_insgesamt);
		
	}

}


Dann meckert der Compiler allerdings, dass er int erwartet, wo double steht.
 

Mofi

Bekanntes Mitglied
Vielen Dank noch einmal für deine sehr ausführliche Hilfe. Als ich mir gerade noch einmal alles in Ruhe durchgelesen habe, ist es mir auch klar geworden. Wenn ich vielleicht noch eine Frage stellen darf:

Um nun mit der Berechnung anzufangen, muss ich von int auf double wechseln, da es sich um Fließkommazahlen handelt.
Schreibe ich es also nun folgendermaßen:

Java:
class main {


	static final double GVE_in_kg = 500; 
	static final double GVE_in_kg_insgesamt = 31231; 


public static void main(String args[]) {


	berechnung(GVE_in_kg, GVE_in_kg_insgesamt);

	}

		static void berechnung(double GVE_in_kg, double GVE_in_kg_insgesamt) {

		double berechnung [] [] = new double [GVE_in_kg] [GVE_in_kg_insgesamt];

	
			System.out.println(GVE_in_kg_insgesamt);
		
	}

}


Dann meckert der Compiler allerdings, dass er int erwartet, wo double steht.

versuchs mal mit 500.0 und 31231.0
bei dir stehen momentan nur ganzzahlen und die sind für den compiler nunmal ints :)
 

Mofi

Bekanntes Mitglied
Hallo mofi.

Das habe ich auch schon versucht. Das Ergebnis ist aber dasselbe.

argh sorry mein fehler, seh ich auch grad erst :oops:

es liegt an der zeile
Java:
double berechnung [] [] = new double [GVE_in_kg] [GVE_in_kg_insgesamt];

in den eckigen klammern düfen NUR ganzzahlen rein, also nur ints.

wenn du
Java:
 double berechnung [] [] = new double [(int)GVE_in_kg] [(int)GVE_in_kg_insgesamt];

schreibst sollte es gehen.
 

Cerberus81

Mitglied
Also, compiliert wird der Code nun ohne Fehlermeldung.

Sobald ich das Programm allerdings ausführe, steht da:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at main.berechnung(hugo1.java:17)
at main.main(hugo1.java:11)
 

Mofi

Bekanntes Mitglied
Also, compiliert wird der Code nun ohne Fehlermeldung.

Sobald ich das Programm allerdings ausführe, steht da:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at main.berechnung(hugo1.java:17)
at main.main(hugo1.java:11)

naja das bedeutet, dass du mehr speicher beanspruchen willst, als du zur verfügung hast.
im klartext: die dimensionen deines array sind viel zu groß! weiß auch gar nicht warum du so große brauchst?
 

Cerberus81

Mitglied
Naja, ich will ja mit den Konstanten rechnen. Ist es in diesem Fall überhaupt ratsam, ein zweidimensionales Array anzulegen?
 

Cerberus81

Mitglied
Also eigentlich möchte ich ja bloß mit den beiden Werten oben rechnen. Und um die zusammen zu fassen, lege ich halt die "berechnung" fest.
Laut Aufgabenstellung soll die Methode ja mit static void initialisiert werden. Wie mache ich es denn sonst, ohne ein array anzulegen? Ich stehe gerade total auf dem Schlauch. Sorry, wegen dem vielen nachfragen.
 

Mofi

Bekanntes Mitglied
Also eigentlich möchte ich ja bloß mit den beiden Werten oben rechnen. Und um die zusammen zu fassen, lege ich halt die "berechnung" fest.
Laut Aufgabenstellung soll die Methode ja mit static void initialisiert werden. Wie mache ich es denn sonst, ohne ein array anzulegen? Ich stehe gerade total auf dem Schlauch. Sorry, wegen dem vielen nachfragen.

gib mal die eigentliche formel die berechnet werden soll. anders kann ich dir nicht helfen :) (vllt jemand anderes )

array anlegen und mit zwei werten rechnen ist was anderes. mit zwei werten kann ich auch so rechnen:
x = 2;
y = 3;
z = x + y;
(in diesem falle wäre z dann 5 :) )

ich hoffe du verstehst was ich meine
 

Cerberus81

Mitglied
Also, 31231 /0.91 * 360

Nur, die Methode soll halt mit Static void beginnen.

So steht es in der Aufgabe:

Damit die Prozeduren, die sie in den Aufgaben unten definieren, auch in main() aufgerufen werden können, müssen Sie vor dem Namen der Prozedur jeweils die Zauberworte static void schreiben. Beispiel: static void Schachbrettanzeigen(int zug) { … }
 

Mofi

Bekanntes Mitglied
Also, 31231 /0.91 * 360

Nur, die Methode soll halt mit Static void beginnen.

So steht es in der Aufgabe:

im endeffekt wie sowas:

Java:
class Test {
 
 
    static final double GVE_in_kg = 500; 
    static final double GVE_in_kg_insgesamt = 31231; 
 
 
public static void main(String args[]) {
 
 
    berechnung();
 
    }
 
        static void berechnung() {
        	double ergebnis = GVE_in_kg_insgesamt / 0.91 * 360;
        
 
    
            System.out.println(ergebnis);
        
    }
 
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Fats Waller Wofür stehen diese Konstanten im Java Labyrinth ? Java Basics - Anfänger-Themen 5
M Wie lassen sich Konstanten in Bedingung stellen? Java Basics - Anfänger-Themen 1
thor_norsk Symbolische Konstanten Java Basics - Anfänger-Themen 9
L Konstanten Java Basics - Anfänger-Themen 7
A SelectionSort bringt keine konstanten Ergebnisse Java Basics - Anfänger-Themen 4
F Erste Schritte Literale / Konstanten Java Basics - Anfänger-Themen 5
M Konstanten in einem Interface definieren Java Basics - Anfänger-Themen 1
M Enum: Zugriff auf Konstanten Java Basics - Anfänger-Themen 7
E wann welche Konstanten verwenden? Java Basics - Anfänger-Themen 7
Luk10 Frage zu globalen Konstanten Java Basics - Anfänger-Themen 11
T Variablen Verständnissfrage Konstanten Java Basics - Anfänger-Themen 6
S Dezimale Konstanten sind immer positiv oder null - was heisst das den genau? Java Basics - Anfänger-Themen 2
D Sind Enums typsichere Konstanten? Java Basics - Anfänger-Themen 15
M Konstanten in Java Java Basics - Anfänger-Themen 23
A Was ist performanter für Konstanten, enum oder static variablen Java Basics - Anfänger-Themen 5
P Klassen-konstanten durchlaufen Java Basics - Anfänger-Themen 9
S Viele Konstanten, EnumSet? Java Basics - Anfänger-Themen 3
D Frage zu Konstanten Java Basics - Anfänger-Themen 7
G static block und konstanten Java Basics - Anfänger-Themen 2
S Organisieren von Konstanten Java Basics - Anfänger-Themen 16
G Wohin mit Konstanten? Java Basics - Anfänger-Themen 12
G konstanten leicht benutzen? (sichtbarkeit) Java Basics - Anfänger-Themen 17
F Konstanten Java Basics - Anfänger-Themen 36
K System.exit() - Konstanten ? Java Basics - Anfänger-Themen 2
M Konstanten ableiten und überschreiben Java Basics - Anfänger-Themen 2
Dilandau array aus konstanten definieren? Java Basics - Anfänger-Themen 6
P Ich komme nicht mehr weiter bei so einer einfachen Sache... Java Basics - Anfänger-Themen 18
W Einfachen, ein beliebiges Zeichen oft erkennenden Regex Parser selber schreiben - wie vorgehen? Java Basics - Anfänger-Themen 12
C Die Klasse Menge mit Konstruktoren und einfachen Methoden Java Basics - Anfänger-Themen 5
J Einfachen String ausgeben Java Basics - Anfänger-Themen 4
J Wo liegt nur an dieser einfachen Bedingung mein Fehler? Java Basics - Anfänger-Themen 8
E Input/Output einfachen Socket für XML-Anfragen bauen Java Basics - Anfänger-Themen 13
A Erstellung eines einfachen Plugin HILFE ! Java Basics - Anfänger-Themen 19
L einfachen kalender Programmieren HA! Java Basics - Anfänger-Themen 76
A Doppelter Backslash durch einen einfachen Backslash ersetzen Java Basics - Anfänger-Themen 6
StrikeTom Was ist an dieser einfachen funktion falsch? Java Basics - Anfänger-Themen 5
Y Problem mit einfachen Methoden Java Basics - Anfänger-Themen 18
F "n cannot be resolved" Fehler im einfachen programm - Warum? Java Basics - Anfänger-Themen 11
brainray Einfachen RMI Server bei einem Provider zum Laufen bringen Java Basics - Anfänger-Themen 3
Y Einfachen Quelltext in UML darstellen mit Eclipse Java Basics - Anfänger-Themen 8
Binary.Coder Bubblesort in einfachen unmissverständlichen Sätzen Java Basics - Anfänger-Themen 2
S Benutzereingaben in einfachen numerischen Matheaufgaben Java Basics - Anfänger-Themen 7
M Suche einen ganz einfachen Editor (syntax Highlighting+comp) Java Basics - Anfänger-Themen 7
F Erstellen von einfachen JFrame Java Basics - Anfänger-Themen 2
B Ertsellung einer einfachen Matrix Java Basics - Anfänger-Themen 12
G Problem mit einer ganz einfachen Funktion Java Basics - Anfänger-Themen 8
M Hilfe bei einem einfachen Java-Programm Java Basics - Anfänger-Themen 41
B Brauche Hilfe bei nem ganz einfachen Programm... Java Basics - Anfänger-Themen 4
D mehrere Berechnungen in einer Methode Java Basics - Anfänger-Themen 9
I BigDecimal und Berechnungen weiterhin mit + / - usw. Java Basics - Anfänger-Themen 11
S Geometrische Berechnungen Java Basics - Anfänger-Themen 6
U Array werte speichern und für berechnungen nutzen Java Basics - Anfänger-Themen 4
N Mehrere berechnungen auf einem Button legen? Java Basics - Anfänger-Themen 19
S Berechnungen Java Basics - Anfänger-Themen 13
S Konsole für längere Berechnungen anzeigen als Statusanzeige Java Basics - Anfänger-Themen 4
F date und time berechnungen Java Basics - Anfänger-Themen 2
M Programm für trigonometrische Berechnungen in 84 Fällen. Java Basics - Anfänger-Themen 12
S Bearbeitungsreihenfolge bei Berechnungen Java Basics - Anfänger-Themen 8
S Benutzung von Thread -> Trennung GUI und Berechnungen &lt Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben