Hallo!
ich bin totaler Programmieranfänger und muss eine Hauptprogramm und eine
class schreiben.
das ist das main
import java.util.Scanner;
public class Calculator {
public static void main(String ... args) {
Scanner sc = new Scanner(System.in);
int a;
int b;
Complex coi = new Complex();
Complex coii = new Complex();
boolean check;
if(sc.hasNext()){
String op = sc.next();
coi.set(sc.nextInt(),sc.nextInt());
if('+' equals(op)){
while(sc.hasNextInt()){
a = sc.nextInt();
b = sc.nextInt();
coii.set(a,b);
coi.add(coii);
}
}
if('-' equals(op)){
while(sc.hasNextInt()){
a = sc.nextInt();
b = sc.nextInt();
coii.set(a,b);
coi.sub(coii);
}
}
coi.print();
}
}
}
und das die class complex
class Complex {
int rea;
int img;
void set(int a, int b) {
this.re = a;
this.im = b;
}
public void add(Complex c) {
this.re = this.re + c.re;
this.im = this.im + c.im;
}
public void sub(Complex c) {
this.rea = this.re - c.rea;
this.img = this.im - c.img;
}
void print() {
System.out.println(this.rea + ' ' + this.img);
}
}
wenn ich es compiliere erhalte ich folgende fehlermeldung
Calculator:java:18: ')' expected
if('+' equals(op))}
^
Calulator.java:18: ';' expected
if('+' equals(op)){
^
und dasselbe für '-' in der Zeile 28
ich hab schon einiges versucht, komm aber nicht dahinter!
vll kann mir ja jemand weiterhelfen...
lg
if('+' equals(op))
Das kann selbst Java nicht....
Kannst zb auch
String test="+";
if(test.equals(op))
probieren...
wenn ich einen Punkt vor equals mache erhalte ich komischerweise 12
weitere fehlermeldungen.
beim 2 vorschlag, kommen auch 2 fehlermeldungen
Calculator.java:41 (identifier) expected
coi.print();
^
Calculator.java.43: class, interface, or enum expected
)
^
Deine Klasse für komplexe Zahlen ist sehr fehlerhaft. z.B. this.re = this.re + c.re; Du hast 2 Felder rea und img. Aber hier versuchst du Felder zu benutzen die du gar nicht definiert hattest. Also korrekt wäre: this.rea = this.rea + c.rea;
Nur um das nochmal genauer zu erläutern.
wenn du
einfach nur equals(op)
hin schreibst, dann rufst du die Methode "equals" deiner eigenen Klasse
aus. Die Methode equals existiert immer, da von Object geerbt. Um ein
Objekt mit einem anderen zu vergleichen rufst du die Equals Methode des
einen Objekts mit dem anderen Objekt als Parameter auf. Ich würde da
also schreiben op.equals("+").
Wenn du noch ein "+" vor das equals(op) schreibst dann ist das einfach
falsch. Daher bemängelt der Compiler halt das nach dem "+" nicht Ende.
So, was dann kommt:
Calculator.java:41 (identifier) expected
coi.print();
schau dir mal deine Complex class an.
void print() {
wie soll denn da drauf zugegriffen werden? Wenn du die Klassen zusammen
in ein Package legst könnte es gehen, aber so nicht.
also public void print() {
Calculator.java.43: class, interface, or enum expected
)
^
das kann ich im Moment auch nicht beantworten, das passt nicht zu deinem
Quelltext oben.
viele Grüße
Aike
>wenn ich einen Punkt vor equals mache erhalte ich komischerweise 12 >weitere fehlermeldungen. Statt '' musste "" sein, das ist doch ein string und nicht char.
danke, die vielen tipps haben mir bis jetzt sehr weiter geholfen, habe
eine klammer zuviel geschlossen deshalb auch der fehler in der zeile 43
ein fehler wird mir allerdings noch immer ausgeben beim compilieren,
bis jetzt sieht es so aus
import java.util.Scanner;
public class Calculator {
public static void main(String ... args) {
Scanner sc = new Scanner(System.in);
int a;
int b;
Complex coi = new Complex();
Complex coii = new Complex();
boolean check;
if(sc.hasNext()){
String op = sc.next();
coi.set(sc.nextInt(),sc.nextInt());
String test="+";
if(test.equals(op))
while(sc.hasNextInt()){
a = sc.nextInt();
b = sc.nextInt();
coii.set(a,b);
coi.add(coii);
}
}
String test="-";
if(test.equals(op))
while(sc.hasNextInt()){
a = sc.nextInt();
b = sc.nextInt();
coii.set(a,b);
coi.sub(coii);
}
}
coi.print();
}
der fehler
Calculator.java :41: (identifier) expected
coi.print();
^
ich weiss absolut nicht was ich falsch gemacht habe
Ist dein Complex.print() auch public? Hat Aike vorhin schon zu dieser
Zeile geschrieben, aber du hast auf diesen speziellen Punkt nicht
geantwortet...
Ach ja, und diesen Kram mit test="+" brauchst du nicht, außerdem finde
ich persönlich die Version op.equals("+") übersichtlicher. Ist aber
sicherlich Geschmackssache.
Und noch was: Für mich sieht es irgendwie so aus, als würdest du zu
viele schließende geschweifte Klammern verwenden, vielleicht habe ich
mich aber auch verzählt.
ja, mein complex print habe ich auch schon public gesetzt. zuerst habe ich eine klammer zuviel gehabt, habe ich aber schon gelöscht
Du machst hinter deinem if()while() eine Klammer auf, jedes mal aber zwei zu. Ist dir das aufgefallen?
Das ist compilierbare Code. Du kannst mit deinem Stück vergleichen und findest die Fehler.
1 | import java.util.Scanner; |
2 | public class Calculator { |
3 | public static void main(String ... args) { |
4 | |
5 | Scanner sc = new Scanner(System.in); |
6 | int a; |
7 | int b; |
8 | Complex coi = new Complex(); |
9 | Complex coii = new Complex(); |
10 | boolean check; |
11 | |
12 | if(sc.hasNext()){ |
13 | |
14 | String op = sc.next(); |
15 | |
16 | coi.set(sc.nextInt(),sc.nextInt()); |
17 | |
18 | if("+".equals(op)) |
19 | |
20 | while(sc.hasNextInt()){ |
21 | a = sc.nextInt(); |
22 | b = sc.nextInt(); |
23 | |
24 | coii.set(a,b); |
25 | coi.add(coii); |
26 | }
|
27 | if("-".equals(op)) |
28 | |
29 | while(sc.hasNextInt()){ |
30 | a = sc.nextInt(); |
31 | b = sc.nextInt(); |
32 | |
33 | coii.set(a,b); |
34 | |
35 | coi.sub(coii); |
36 | }
|
37 | }
|
38 | coi.print(); |
39 | }
|
40 | }
|
Sieht gut aus, fast genau so hatte ich mir das vorgestellt. Wie gesagt,
ich finde op.equals("+") schöner, aber das sollte an der Funktion 0,nix
ändern. Hoffentlich sieht er das nun fehlende }...
Eine vernünftige Einrückung wäre noch schön gewesen. Aber es gibt hier
ja keinen Schönheitspreis ;-)
hab den fehler gefunden, ich hab eine geschwungene klammer, zu früh geschlossen danke für all die tipps!! lg
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.