kostenloser Webspace werbefrei: lima-city


Falsche Rückgabewerte

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    alphara

    Kostenloser Webspace von alphara

    alphara hat kostenlosen Webspace.

    Hi.

    Ich habe ein echtes Verständnistag/problem">problem in Sachen Java. Mein Programm besteht im Grunde aus drei Klassen: der Hauptklasse, einer Funktionsklasse und einer Threadklasse. Die Hauptklasse referenziert die Funktionsklasseklasse und die Threadklasse, die Threadklasse nur die Funktionsklasse. Die Funktionsklasse besitzt eine Methode, die die übergebenen Parameter verrechnet und ein Ergebnis zurück gibt. Das Problem ist folgendes: Wenn ich verschiedene Werte aus der Hauptklasse in die Funktion einsetze, dann bekomme ich auch verschiedene Ergebnisse. Setze ich verschiedene Werte aus der Threadklasse in die Funktion ein, bekomme ich immer die gleichen Werte. Ich verstehe einfach nicht, woran das liegen könnte.

    Hier etwas stark gekürzten Quellcode zum besseren Verständnis:

    class Funktion {
    
        public double[] computed = new double[3];
    
        public Funktion(){}
    
        public double[] getValue(double a, double b) {
              computed[0]  = /*komplizierte Funktion*/;
              computed[1]  = /*komplizierte Funktion*/;
              computed[2]  = /*komplizierte Funktion*/;
              return computed;
        }
    }
    
    class Nebenklasse extends Thread {
    
          private Funktion f = new Funktion();
    
          public Nebenklasse(){}
    
          public void run() {
    
                  for (int i=0;i<max;i++) {
                        values = f.getValue(werte[i][0],werte[i][1]);   // liefert immer genau das gleiche Ergebnis
                  }
          }
    }
    
    public class Hauptklasse {
    
           
          private Funktion f = new Funktion();
    
          public Hauptklasse(){}
    
          public static void main(final String args[]) {
    
                  for (int i=0;i<max;i++) {
                        values = f.getValue(werte[i][0],werte[i][1]); // liefert verschiedene Ergebnisse
                  }
    
                 Nebenklasse test = new Nebenklasse();
                 test.start();
          }
    }
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Also woran das genau liegt kann ich auch noch nicht sagen. Auf jeden Fall ist aber die Idee ein Rückgabeergebnis, dass sich ändert als Klassenattribut zu benutzen eine ganz schlechte Idee. Zumindest, wenn es eine Referenz ist (Objekte und Arrays).
    class Funktion {
    
        public Funktion(){}
    
        public double[] getValue(double a, double b) {
              double[] computed = new double[3];
              computed[0]  = /*komplizierte Funktion*/;
              computed[1]  = /*komplizierte Funktion*/;
              computed[2]  = /*komplizierte Funktion*/;
              return computed;
        }
    }


    Wichtig wäre vllt auch den Code gleich mit den Ausgabebefehlen zu schreiben, da wir garnicht wissen, wie du überhaupt mitbekommst, dass es unterschiedliche bzw. gleiche Ergebnisse bringt.

    Beitrag zuletzt geändert: 10.7.2012 19:56:44 von reimann
  4. Autor dieses Themas

    alphara

    Kostenloser Webspace von alphara

    alphara hat kostenlosen Webspace.

    reimann, du bist der Held des Tages. Du hast dir einen Kuss von meiner Schwester verdient. Ich hab mir fast gedacht, dass ein Referenzierungsfehler vorliegt, nur hab ich ihn nicht gefunden. Aber dein Post hat mir die Lösung geliefert: einfach die Methode
    getValue()
    noch durch
    computed = new double[3];
    am Anfang erweitern und promt funktionierts. Zum Glück mache ich nicht ständig solche Anfängerfehler, wäre ja auch oberpeinlich....

    €dit: So viele Fehler in einem einzigen Post.... Man bin ich durch den Wind gerade

    Beitrag zuletzt geändert: 10.7.2012 20:52:43 von alphara
  5. *closed* da das Problem gelöst wurde.

    Bei Rückfragen einfach eine PN an mich.
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!