Java Code aus 2008 lässt sich nicht compilieren...

Endless Storm

Commander
Registriert
Dez. 2008
Beiträge
2.139
Hallo,

ich bin ganz frisch dabei Java zu lernen. Genauer gesagt in Form eines Online-Studienganges.

Nun stehe ich vor dem Problem, dass ich zu Testzwecken einen Code vorliegen habe, dieser stammt ca aus 2008. Ich verwende jedoch das aktuelle JDK 7u17.

Jetzt spuckt er mir immer Fehlermeldungen beim compilieren aus (hier der Fehler des zweiten Codes):
Code:
error: Class names, 'mwst', are only accepted if annotation processing is explicitly requested
1 error

Hier zwei Codes, welche ich nicht compiliert bekomme. Um einen Fehler meinerseits auszuschließen kopiere ich euch hier die Originalcodes aus den Übungen:

Code:
/************************************************ 
Programm zur Berechnung des BMI (Body Mass Index)
Eingabewerte werden über die Konsole eingelesen 
*************************************************/ 
import java.util.*; //Importieren der Bibliothek util

public class BMI2  
{
// Hilfsmethode zur Eingabe //////////////////////////////////
  /**Liest eine Gleitpunktzahl vom Typ double von der Konsole
  * Deutsche Notation: Trennung der 
  * Nachkommastellen durch Komma
  * ... (wie oben)
  */
 public static double readDoubleComma() throws 
   InputMismatchException, NoSuchElementException, 
   IllegalStateException
 {
    Locale.setDefault(Locale.GERMAN);
    return new Scanner(System.in).nextDouble();
 }
 // Ende Hilfsmethode zur Eingabe /////////////////////////////

 //Berechnet den BMI
 public static void main (String args[])  
 {
   double bmi; //lokale Variablen
   double koerperGewicht = 0.0;
   double koerperGroesse = 0.0;
   System.out.println
    ("Geben Sie bitte Ihr Gewicht in kg ein:");
   //Aufruf der Methode readDoubleComma()
   koerperGewicht = readDoubleComma(); 
   System.out.println
    ("Geben Sie bitte Ihre Groesse in m ein:");
   //Aufruf der Methode readDoubleComma()
   koerperGroesse = readDoubleComma(); 

   bmi = koerperGewicht / (koerperGroesse * koerperGroesse); 
   System.out.println
      ("Ihr Gewicht von " + koerperGewicht + " kg");
   System.out.println
      ("und Ihre Groesse von " + koerperGroesse + " m");
   System.out.println("ergeben einen BMI von " + bmi);
   System.out.println
      ("Die hoechste Lebenserwartung haben Menschen");
   System.out.println("mit einem BMI zwischen 20 und 24");
 }
}

Code:
/************************************************ 
Programm zur Berechnung der MWST
Der Bruttowert wird über die Konsole eingelesen
Ausgegeben werden der Nettowert und die MWST 
*************************************************/ 
import java.util.*; //Importieren der Bibliothek util
class MWST  
{
 // Hilfsmethode zur Eingabe ////////////////////// 
 // analog wie im Programm BMI2
 // Ende Hilfsmethode zur Eingabe /////////////////

// Berechnet die MWST
 public static void main (String args[])  
 {
   final double VOLLE_MWST = 19.0;
   double netto, brutto, mwstBetrag; 
   System.out.println
    ("Geben Sie bitte den Bruttobetrag ein:");
   brutto = readDoubleComma(); //Einlesen
   netto = brutto * 100.0 / (VOLLE_MWST + 100.0);
   mwstBetrag = brutto * VOLLE_MWST / (VOLLE_MWST + 100.0);
   System.out.println("Brutto " + brutto + " Euro");
   System.out.println("Netto " + netto + " Euro");
   System.out.println("MWST " + mwstBetrag + " Euro");
 }
}

Soweit wie ich das sehe, müsste anstelle von nur "class MWST" eigentlich "public class MWST" da stehen. Dies allein bringt aber nicht den gewünschten Erfolg.

Codes wie dieser hier funktionieren einwandfrei, diesen habe ich selbst aus den Übungen davor erstellt:
Code:
public class BMI
{
	public static void main (String args[])
	{
		double koerperGewicht, koerperGroesse, bmi;
		koerperGewicht = 85;
		koerperGroesse = 1.90;
		bmi = koerperGewicht / (koerperGroesse * koerperGroesse);
		System.out.println("Ihr Gewicht von " + koerperGewicht + " kg");
		System.out.println("und Ihre Groesse von " + koerperGroesse + " m");
		System.out.println("ergeben einen BMI von " + bmi);
		System.out.println("Die hoechste Lebenserwartung haben Menschen");
		System.out.println("mit einem BMI zwischen 20 und 24");
	}
}

Nur, dass ihr wisst, dass es scheinbar kein Grundsätzliches Einstellungsproblem sein kann/dürfte oder ich den compilieren-Befehl nicht richtig anwenden kann. Dies klappt nämlich sehr gut.


Das eigentliche Problem ist, dass dies ein Anfängerkurs ist, für mich als Quereinsteiger daher ideal... Problem dabei ist aber, dass viele Dinge erst später erklärt werden, anfangs soll man vieles so hinnehmen, wird später erklärt... super :(
Für mich ist es schier unmöglich den Fehler zu finden... Ist ja nichts erklärt was wann wie und warum gemacht werden muss...


Hoffe ihr könnt mir helfen was falsch ist, damit ich voran komme. Wenn möglich mit verständlichen Erklärungen, damit ich die folgenden Übungen selbst korrigieren kann.

Vielen vielen Dank erstmal
 
Zuletzt bearbeitet:
Darlis dürfte ziemlich recht haben, daher hier nur der Vollständigkeit halber:

...dieser stammt ca aus 2008. Ich verwende jedoch das aktuelle JDK 7u17.

ist vollkommen egal bei Java bzw. dem JDK. Nur die andere Richtung ist schon problematischer ;)

..., dass dies ein Anfängerkurs ist, ...

Und genau da ist auch schon das Problem. Diverse Java Anfängerkurse aus dem Internet sind nämlich der Meinung, dass man für ein grundlegendes Java-Verständnis erstmal von Hand kompilieren sollte (also per javac in der konsole). Das ist absoluter nonsens, denn im Gegensatz zu "niedrigeren" (also natürlich nicht abwertend gemeint, sonder einfach hardware- / systemnäheren) Sprachen lernt man bei Java durch den manuellen Kompiliervorgang nicht mehr dazu. Mann kann auch nichts "optimieren" (bei durchschnittlichen Programmen, wohlgemerkt. In der Forschung sieht das anders aus ;) ), denn genau für solche Probleme beim Kompilieren gibt es in Java die VM.

Viel besser ist, sich gleich von Anfang an in echte IDE einzuarbeiten (--> Eclipse / IntelliJ), davon hat man mehr. Dann treten auch solche Fehler nicht mehr auf, denn auch hier wars einfach nur nen simpler Schreibfehler, jedoch kein Verständnisfehler.
Das ist im Übrigen auch der Weg, der an richtigen Hochschulen und Unis gelehrt wird. Das von Hand kompilieren hat man da nur mal verständnishalber in der Theorie.

Mal ganz abgesehen davon, dass dieses Codebeispiel absolut furchtbar und traurig ist, selbst für einen Lernkurs. Jeder Java Developer da draußen würde dir das um die Ohren schlagen, 'German Quellcode' ist einfach fürchterlich und gehört verboten, spätestens bei Umlauten in Quellcode ist schluss. (Die gehen nämlich beim verteilten Programmieren per VCS u.U. flöten und sorgen dann für Fehler im Code) Auf sowas gibts grundsätzlich keine Punkte, das gewöhnt man sich besser erst gar nicht an.

tl;dr
Nicht von hand kompilieren, dadurch lernst du bei Java nichts dazu. Besser gleich in eine richtige IDE einarbeiten, davon hast du mehr in der Zeit. Im Quellcode sollte niemals eine andere Sprache als Englisch auftauchen, und Umlaute schon gar nicht.

Grüße
PaddyG
 
Zuletzt bearbeitet:
Zunächst Danke für eure Antworten. Es war zum einen wirklich die Endung .java :stock: Hab ich das doch tatsächlich von gestern auf heute vergessen^^

Bei dem Code MWST klappt es jedoch immer noch nicht.

Code:
MWST.java:20: error: cannot find symbol
   brutto = readDoubleComma(); //Einlesen
            ^
  symbol:   method readDoubleComma()
  location: class MWST
1 error

Kann es vielleicht hier sein, dass hiervon was fehlt:

Code:
	public static double readDoubleComma() throws
	InputMismatchException, NoSuchElementException,
	IllegalStateException
	{
		Locale.setDefault(Locale.GERMAN);
		return new Scanner(System.in).nextDouble();
	}
(mal kopiert aus BMI2)


Welche Version von Eclipse ist denn richtig für mich? Reicht die IDE for Java Developers, oder sollte es die IDE for Java EE Developers sein?
Habe mir bevor ich hier meine Frage gepostet hab die erste genannte bereits runtergeladen, aber noch nicht installiert.
 
Zuletzt bearbeitet:
In MWST wird eine Methode readDoubleComma() benötigt, die aber nicht in dieser, sondern in einer anderen Klasse existiert

Schlechte Lösung: Den Code von BMI nach MWST kopieren.
Schnelle Lösung: Die Methode über BMI.readDoubleComma() aufrufen (geht nur weil die Methode static ist)
Beste Lösung: Eine eigene Klasse für solche Aufgaben (input/output) anlegen.

Und ja, die Standard-Edition reicht vollkommen aus.

Edit: Bitte Code-Tags anstatt Quote-Tags für Code benutzen.
 
Zurück
Oben