Was ist der Unterschied zwischen einem Compiler-Fehler und einem Laufzeitfehler (Java)?

1 Antwort

Compiler-Fehler: 

Das bedeutet, dass der Java-Compiler deinen Code nicht kompilieren kann. Das liegt häufig an Syntax-Fehlern, z.B:

  • Fehlende Klammern
  • Fehlendes Semikolon
  • Zugriff auf private Eigenschaften oder Methoden aus anderen Klassen

Ein Bespiel:

int i = "10";

Das ist natürlich kein Integer und kann deshalb nicht von Javac kompiliert werden.

Compiler-Fehler sind also solche, die schon vor der Ausführung des Programms deutlich sind.

Laufzeit-Fehler:

Dabei konnte der Code kompiliert werden. Er ist also syntaktisch korrekt. Diese Fehler treten auf, während das Programm ausgeführt wird (at runtime). Bei einem runtime error wird es an einem bestimmten Punkt abgebrochen. Beispiele:

  • Division durch null
  • NullPointerException (Variable nutzen, die null ist)
  • Array-Indizes nutzen, die außerhalb der bounds liegen
  • Nutzung nicht verfügbarer Ressourcen wie Dateien

Ein Codebeispiel:

double x = 0; // könnte z.B. eine Nutzereingabe sein
double d = 5/x;

Letztendlich fallen Compiler-Fehler schon beim kompilieren auf, d.h. der Code ist ungültig. Laufzeit-Fehler dagegen treten nicht unbedingt bei jeder Ausführung des Programms auf, sondern oft in bestimmten Situationen (ungültige Nutzereingaben, keine Internetverbindung, etc.). Deshalb ist es wichtig, diese Ausnahmen (Exceptions) per try/catch-Konstrukt abzufangen sowie zu verarbeiten.

Gibt es in Java eine Art Benachrichtigunsfenster für Textausgaben?

Hallo, ich möchte in Java einen Text über ein extra Fenster Ausgeben lassen, das einfach mit ok weggedrückt werden kann. Gibt es so etwas? So wie in Delphi die Funktion ShowMessage(); ... oder muss ich das in Java selbst Programmieren?

...zur Frage

Java: Wie kann ich in switch-Statements Benutzereingaben verarbeiten?

Hallo!

Also, ich muss eine Ampel in Java basteln. Die Ampel soll wechseln:

rot => rot-gelb => gelb => grün => rot => rot-gelb => gelb...

Ich habe jetzt ein Switch Statement (switch case) verwendet:

 public class TrafficLight {
public static void main(String[] args) {

    int tl = 2;
    String tlString;
    switch (tl) {
        case 1:  tlString = "red";
                 break;
        case 2:  tlString = "red-yellow";
                 break;
        case 3:  tlString = "green";
                 break;
        case 4:  tlString = "yellow";
                 break;
        default: tlString = "Invalid tl";
                 break;
    }
    System.out.println(tlString);

}
 }

Das funktioniert schonmal, aber ich bekomme nur „red-yellow” als Ausgabe. Damit ist die 1. Hälfte getan. Nun müsste der Benutzer nur noch eine Aktion machen (z.B. „c” eingeben). und dann sollte die Ampel umschalten (also auf grün wechseln). Ich habe also mit

  import java.util.Scanner;

den Scanner importiert (1. Zeile) und dann zwischen die letzten beiden geschweiften Klammern (s.o.)

public static void input(String[] args) {

    Scanner scan = new Scanner(System.in);
    int y = scan.nextInt();

    System.out.println("Please enter a the letter c:");
    int year = scan.nextInt();

}

eingefügt. Aber Java gibt noch nichtmal die Ausgabe aus, dass eine Eingabe erwartet wird und Eingaben sind auch nicht möglich! Was mache ich falsch? Oder ist die Idee generell falsch?


Hier die Aufgabe im Original:

Implementieren Sie die Steuerung einer Verkehrsampel. Die Verkehrsampel kann sich dabei ausschlielich in einem der folgenden vier Zustände benden: rot, rot-gelb, grün und gelb. Die Ampel darf dabei nur von rot auf rot-gelb, von rot-gelb auf grün, von grün auf gelb und von gelb auf rot umschalten. Schreiben Sie eine Klasse TrafficLight, die diesen Anforderungen genügt. Die Klasse soll jeweils eine Methode zum Weiterschalten der Ampel zwischen den erlaubten Zuständen anbieten. Ferner sollte es möglich sein, denaktuellen Zustand der Ampel auf den Bildschirm auszugeben. Schreiben Sie eine Main-Methode, in der Sie ihre Implementierung gründlich testen.


Danke im Voraus!

...zur Frage

Wie kann ich eine Digitaluhr mit java programmieren?

ich habe bereits eine Uhr so programmiert, dass es so aussieht (funktioniert(also so, dass die Uhr läuft)). Jedoch möchte ich nur die Zeit innerhalb des Tages anzeigen lassen. Hier die src: http://pastebin.com/VCfKPFsM

Wäre sehr nett, wenn mir jemand helfen könnte C:

...zur Frage

Kenntnisse über Datenbanken und Programmiersprachen?

Hi,

ich arbeite jetzt schon länger in einer Firma und mein Chef versteht nicht dass ich nie Informatik an sich studiert habe. Das heißt, er denkt dass ich Programmiersprachen kann. Am besten Alle. ;)

Er versteht eben nichts von Info und ich kenne nur ein bisschen Java und bräuchte jetzt für das neue Projekt eben aber auch Erfahrung C oder C++ .

Die Frage ist, soll ich das jetzt nebenher lernen oder würdet ihr von ihm eine Weiterbildung fordern? Gibt doch so Möglichkeiten ein mal im Jahr ne Weiterbildung zu machen laut Gesetzgeber oder? Täusche ich mich?

...zur Frage

Was möchtest Du wissen?