Habe ich im Programm alle Syntaxfehler gefunden?
Hallo, ich muss ein Programm auf Syntaxfehler überprüfen. Ich habe auch schon angefangen und habe das auch in einem Java-Compiler eingefügt, um zu prüfen. Ich komme aber nicht auf die Fehler, die ich da noch korrigieren muss.
Fehlerhaftes Programm:
public class Fehler {
public static void main(String args) {
System.out.println("Hallo!");
double long = 2;
double not_so_long = 0.3;
int area = long * not_so_long;
System.out.println(area);
boolean istLang = true;
bulean ist Kurz = istLang - 1;
System.out.println(istKurz);
String 1string = "Bye";
string string2 = "Bye!"
char c = "!";
System.out.println(1string+string2-c);
}
}
Korrigiertes Programm:
public class Korrigiert {
public static void main(String[] args) {
System.out.println("Hallo!");
double string = 2;
double not_so_long = 0.3;
int area = long * not_so_long;
System.out.println(area);
boolean istLang = true;
boolean istKurz = istLang;
System.out.println(istKurz);
String String = "Bye";
String String = "Bye!";
char c = '!';
System.out.println(1string + string2 - c);
}
}
Ich hoffe, dass mir da jemand helfen oder Tipps geben kann, wo und was ich noch korrigieren muss. 🙂
Vielleicht noch dazu, es muss:
-Hallo!
-0,6
-false
-ByeBye!
herauskommen.
Danke im Voraus!
2 Antworten

Auf Grundlage deiner Korrektur:
1) Das Symbol long ist ein Datentyp. Mit dem lässt sich nicht multiplizieren.
int area = long * not_so_long;
Des Weiteren ist der Datentyp der Variable falsch. Beim Einsatz einer Ganzzahl wäre ein expliziter Typecast (aufgrund des Datenverlusts) notwendig, bei dem die Nachkommastellen abgetrennt werden würden. Da allerdings 0.6 ausgegeben werden soll, wäre ein double passender.
double area = 2 * not_so_long;
3) Diese Zeile:
boolean istKurz = istLang;
ist nicht logisch. Etwas ist nur kurz, wenn es nicht lang ist. Es fehlt also eine Negation.
boolean istKurz = !istLang;
Dann passt auch die Ausgabe.
3) Der Bezeichner String ist schon für die Klasse String reserviert. Wähle für beide Zeilen andere Namen für die Variablen.
String String = "Bye";
String String = "Bye!";
4) Hier:
System.out.println(1string+string2-c);
werden zwei Symbole verwendet, die nirgendwo definiert wurden. Dort sollten stattdessen die Namen der String-Variablen stehen, die zuvor angelegt wurden. Beachte, dass Variablennamen nicht mit einer Zahl beginnen dürfen.
Außerdem lässt sich mit Strings nicht rechnen. Eine Konkenation (mit dem Konkentationsoperator +) ist zulässig. Die Subtraktion hat dort allerdings nichts verloren.
System.out.println(nameOfFirstString + nameOfSecondString);

Ich schrieb nur von einem anderen Namen. Der Typ muss bleiben, sonst passt das Literal nicht mehr.
Technisch betrachtet kann man die Variablen so benennen, wie man lustig ist, sofern sie sich nicht mit reservierten Wörtern überschneiden (z.B. Namen bereits eingebundener Elemente, Schlüsselwörter wie if, for, while, ...). Die Namen a und b wären also zulässig.
Formell wäre es allerdings ratsam, auch Namen zu suchen, die den Zweck einer Variable besser beschreiben. Im obigen Beispiel könnte man sie z.B. greeting1 und greeting2 nennen.

Ahh okay verstehe, also wäre es hier in diesem Beispiel einfach ohne String, sondern nur
greeting1 = "Bye";
greeting2 = "Bye!";
und in 4.) dann entsprechend
System.out.println(greeting1 + greeting2); oder?
Entschuldige für die vielen Fragen bin aber noch neu in diesem Themengebiet...

Obwohl habe es selber herausgefunden, man musste doch noch ein String vor greeting einsetzen :)
Danke vielmals!

Wenn du versuchst das zu kompilieren sollte in der Regel jede Zeilennummer mit angegeben sein, wo ein Fehler ist.

Stimmt, habe das auch gemacht, jedoch kommen leider immer neue Fehler dazu und komme zu keinem richtigen Ergebnis.
Ich habe da mal eine Frage, da ich so ein ähnliches Programm bearbeite. Du meintest ja, dass man für 3.) eine andere Variable nehmen soll, was für eine Variable könnte man da nehmen?
Sowas wie int a und int b vielleicht?