mikrocontroller.net

Forum: PC-Programmierung Programm in Java


Autor: Schnee ++ (mustermann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Vadim Kovyrov (fregat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if ("+".equals(op))

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if('+' equals(op))

Das kann selbst Java nicht....

Kannst zb auch

String test="+";
if(test.equals(op))

probieren...

Autor: Schnee ++ (mustermann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
           )
           ^

Autor: ARM für Arme (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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;

Autor: Aike T. (biertrinker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Vadim Kovyrov (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wenn ich einen Punkt vor equals mache erhalte ich komischerweise 12
>weitere fehlermeldungen.
Statt '' musste "" sein, das ist doch ein string und nicht char.

Autor: Schnee ++ (mustermann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Johannes Slotta (johanness)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Schnee ++ (mustermann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, mein complex print habe ich auch schon public gesetzt. zuerst habe 
ich eine klammer zuviel gehabt, habe ich aber schon gelöscht

Autor: Johannes Slotta (johanness)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du machst hinter deinem if()while() eine Klammer auf, jedes mal aber 
zwei zu. Ist dir das aufgefallen?

Autor: Uwe Stark (uwe_stark)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was soll er denn ausgeben?
coi.print(fehlender identifier);

Autor: Vadim Kovyrov (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist compilierbare Code. Du kannst mit deinem Stück vergleichen und 
findest die Fehler.
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();
                    }
}


Autor: Johannes Slotta (johanness)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ;-)

Autor: Schnee ++ (mustermann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab den fehler gefunden,
ich hab eine geschwungene klammer, zu früh geschlossen

danke für all die tipps!!

lg

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.