[Java] Fehler in kleinem Prog, wo?

el guapo

Lt. Commander
Registriert
Feb. 2002
Beiträge
1.327
Ich habe ein kleines Programm geschrieben, dass mir eine Prämie berechnen soll. Hier erstmal der Source:


public class praemie {

public static praemie (){
}

public static void main(String[] args) {
}
int dienstzeit = 0;
int alter = 30;
if (dienstzeit < 6) & (alter < 52) {
System.out.println("Die Prämie beträgt 100 €.");
}
else {
System.out.println("Die Prämie beträgt " + (Rechnung(dienstzeit, alter)) + ".");
}

public static int Rechnung (int dienstzeit, int alter) {
int praemie;
if (alter < 52) {
praemie = (dienstzeit * 20) + 40
}
else {
praemie = (dienstzeit * 20) + 40 + 25
}
return praemie;
}
}

Der JBuilder 8 (den ich nunmal nutze) schimpft über die erste if-Anweisung:"Ungültiger Typbeginn". Ich sehe aber einfach nix, vielleicht hab ich auch schon einen Knoten in der Optik.

Was ist falsch?
 
Es heißt &&. Außerdem würde ich den gesamten Ausdruck auch noch in Klammern schreiben.
 
Du meinst so?

public class praemie {

public static praemie (){
}

public static void main(String[] args) {
}
int dienstzeit = 0;
int alter = 30;
if ((dienstzeit < 6) && (alter < 52)) {
System.out.println("Die Prämie beträgt 100 €.");
}
else {
System.out.println("Die Prämie beträgt " + (Rechnung(dienstzeit, alter)) + ".");
}

public static int Rechnung (int dienstzeit, int alter) {
int praemie;
if (alter < 52) {
praemie = (dienstzeit * 20) + 40
}
else {
praemie = (dienstzeit * 20) + 40 + 25
}
return praemie;
}
}

Der Fehler ist aber nach wie vor der gleiche
 
Ja.
Guck' doch mal nach den Klammern von der main-Methode. Da haut was nicht hin...
 
Zuletzt bearbeitet:
jepp, der jbuilder hat mir ne klammer untergejubelt...oder ich ihm ;)

danke für die hilfe
 
warum ist der konstruktor und die methode rechnung static?
hinter if und else brauchst du keine klammern, wenn nur ein befehl folgt!
ausserdem setzt man die attribute private. ;)
 
Original erstellt von dejavue_75
warum ist der konstruktor und die methode rechnung static?
hinter if und else brauchst du keine klammern, wenn nur ein befehl folgt!
ausserdem setzt man die attribute private. ;)

@ dejavu

Welche Attribute meinst du?



Der Vollständigkeit halber:

public class praemie {

public praemie (){
}

public static void main(String[] args) {
int dienstzeit = 6;
int alter = 30;
if ((dienstzeit < 6) && (alter < 52)) {
System.out.println();
System.out.println("Die Prämie beträgt 100 €.");
}
else {
System.out.println();
System.out.println("Die Prämie beträgt " + (Rechnung(dienstzeit, alter)) + ".");
}
}

public static int Rechnung (int dienstzeit, int alter) {
int praemie;
if (alter < 52) {
praemie = (dienstzeit * 20) + 40;
}
else {
praemie = (dienstzeit * 20) + 40 + 25;
}
return praemie;
}
}

Jetzt läuft es auch. :)

Eine Frage hierzu: angenommen, ich möchte noch VOR dem ersten if eine weitere if-Anweisung einbauen, die die Eingabe auf Sinnhaftigkeit überprüft und ggf. abbricht...wie beende ich die Methode vorzeitig?

Beispiel (einfügen nach int alter = 30;)

if ((dienstzeit < 0) | (alter < 0)) {
System.out.println();
System.out.println("Bitte überprüfen Sie die Eingabe!");
}
else [Programmende]
 
dienstzeit alter prämie auf private.
überleg dir mal wie du die if-anweisungen so setzen kannst, dass im falle einer falschen eingabe keine anweisungen mehr folgen ausser der fehlermeldung!
also if eingabe richtig mach die berechnung, else gib die fehlermeldung aus ;)
 
Weis nicht ob das bei Java auch geht, aber bei C/C++ beendet man eine "int main" vorzeitig mit "return 0;". Versuch doch das mal, musst einfach deine main Funktion statt void -> int deklarieren!
 
Mensch, wenn man mal drüber nachdenkt isses simpel, irgendwie bin ich heute blind...

Danke an alle :)
 
Zurück
Oben