kleines Ausgabeproblem in Java ...
Geizhals » Forum » Programmierung » kleines Ausgabeproblem in Java ... (31 Beiträge, 217 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
.
Bin zwar Java-noob...
31.10.2006, 10:46:21
... also nimm nicht alles ernst oder für richtig, was ich schreibe.

Ich sag nur, was mir auffällt - ohne gewähr.

1.) Mich wundert, daß das Ding überhaupt kompiliert.
Du hast a und b als Klassenvariablen und greifst via this darauf zu. this ist aber IMHO für den Zugriff auf die lokale Objektvariable - also ich hätte statt this.a ein Complex.a verwendet - wenn es Klassenvariablen sein müssen.

2.) Dein Constructor wirkt strange.
- Zuerst initialisierst deine Klassenvariablen static int a=0
- Dann rufst den Constructor auf um die Klassenvariablen neu zu initialisieren - und übergibst ihm die Klassenvariablen selbst ?
Ich würde 2 Construtoren bauen: einen a la "Complex() {};" und einen a wie deinen - nur daß ich a und b eben als Objektvariablen gelassen hätte.

3.) Zugriffsrechte:
a und b hätte ich als private gelassen

4.) a cat is a cat is a cat .... Den Scanner hätte ich nicht als Attribut von Complex gesehen - den kann man nach main werfen

5.) Deine Ausgabe:
System.out.println(ausgabe) hätte es auch getan

6.) ausgabe.add(ausgabe1) - wo kommt ausgabe1 daher ???

7.) Ist es so gedacht, daß für jeden Schleifendurchlauf ein neues Objekt erzeugt wird ??? (das dann aber die Klassenvariablen shared) ?
Nachdem ausgabe1 aber ein Complex sein muß - werden ja bei der Initialisierung von dem Ausgabe1-Objekt auch deine Klassenvariablen überschrieben, oder ??? Also auch quasi "a" und "b" von deiner lokalen Klasse, oder ?

Die Scannerklasse kenn ich nicht - ich würde es aber grob so angehen (ungetestet - also Achtung!)


public class Complex{
                private int a = 0;
                private int b = 0;

                public Complex()
                {
                }

                public Complex(int real, int imag){
                        this.a = real;
                        this.b = imag;
                }
                public String toString(){
                        return "(" + this.a + ";" + this.b + ")";
                }
                public void add(Complex c){
                        this.a += c.a;
                        this.b += c.b;
                }
                public void sub(Complex c){
                        this.a -= c.a;
                        this.b -= c.b;
                }

                public void add(int realTeil, int imaginaerTeil) {
                        this.a += realTeil;
                        this.b += imaginaerTeil;
                }



       public static void main(String args[]){
                static Scanner sc = new Scanner(System.in);
                Complex ausgabe=new Complex();

               int a,b;


                while(sc.hasNext()){
                        a = sc.nextInt();
                        b = sc.nextInt();
                        ausgabe.add(a,b); // woimmer das auch herkommt.
                System.out.println(ausgabe);

                }

        }
}



Und natürlich sollte man statt a und b sprechendere Namen vergeben ;-)

31.10.2006, 11:04 Uhr - Editiert von Linux_Sucks, alte Version: hier
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung