setMethode und Variablen

in den setMethoden hat wert auch noch den wert genauso wie das array, wenn ich aber das array in der selben klasse in anderen Methoden verwende, ist dass array 0.0.
 
Moin,

wie bitte sehen denn diese Methoden aus?
Oder sollen wir die Glaskugel herausholen und anfangen uns etwas auszudenken?

Der Code aus Deinem ersten Posts ist zum Beispiel unsinnig,
da niemals von außen auf die Variablen zugegriffen werden kann - weil alle lokal deklariert werden.

Gib uns Code, an dem wir das Problem messen können, ansonsten bringt es nichts.

Gruß,
Xan
 
Hallo,

ich sehe das so, das sowohl neuWert als auch das Array ar[] mit dem du in deiner methode arbeitest, ja nur lokal in der Methode gültig sind.

Solltest du beides als Klassenfeld definiert haben (hast du wohl sonst könntest du nicht in anderen Methoden nicht damit arbeiten) darfst du in der setter-Methode nicht das "double" dem Variablennamen voranstellen.

Auch das instanziieren des Arrays sollte so nicht in einer setter-Methode geschehen !

Gruß Jadix
 
Ich habe wie bereits vorher gepostet, die variabelen aushalb der setter-methode deklariert, was aber vom erfolg her nicht anders war. unter steht jetzt noch mal die gesamte methode.

Java:
package model;
import java.util.ArrayList;

import model.BerechneKosten;


public class BerechneDifferenzKosten {
	double mitDEL;
	double ohneDEL;
	double summe;
	double ar [] = new double[2];
	
	//ArrayList<Double> list = new ArrayList<Double>();
	
	public BerechneDifferenzKosten(){
	}
	
	public void setKostenMitDEL(double summe){
		//mitDEL = summe;
		//list.add(summe);
		ar[0] = summe;
		System.out.println("Der Wert der setKOsten ist: " + summe + " " + ar[0]);
		
	}
	
	public void setKostenOhneDEL(double summe){
		//ohneDEL = summe;
		//list.add(summe);
		ar[1] = summe;
		System.out.println("Der Wert der setKOstenOhne ist: " + ar[1]);

	}
	
	
	
	public String berechneKostenDifferenz(){
		//BerechneKosten bK = new BerechneKosten();

		String diff = "";
		//double mitDEL = Double.parseDouble(bK.rechneGesamtMitDEL());
		//double ohneDEL = Double.parseDouble(bK.rechneGesamtOhneDEL());
		
		//double mitDEL = list.get(0);
		//double ohneDEL = list.get(1);
		System.out.println("MitDEL " + mitDEL + "ohneDEL " + ohneDEL);
		//mitDEL = ar[0];
		//ohneDEL = ar[1];
		
		summe = ar[0] - ar[1];
		System.out.println("DIff SUmme: " + ar[0]);
		if(summe > 0){
			diff = "Kosten ohne DEL sind geringer: ";
		} else if (summe < 0) {
			diff = "Kosten mit DEL sind geringer: ";
		}else{
			diff = "Die Kosten beider Verfahren sind gleich";
			
		}
		
		return diff;
	}

vielleicht gibt es so mehr aufschluss. ich habe zwar mittlerweile eine andere lösung gefunden, aber ich will es über diesen weg auch hinbekommen.

vielen dank für eure hilfe
 
Moin,

wie ich bereits erwähnt habe, ist die Logik in Deinem Code nicht nachvollziehbar gewesen.
Zumindest in dem Teil, wo Du wann genau welche Variablen einsetzt.

Habe das mal eben korrigiert ohne die Kommentare zu beachten:
Java:
public class BerechneDifferenzKosten {
    private double ar[] = new double[2];

    // private double mitDEL;
    // private double ohneDEL;
    private double summe;

    public BerechneDifferenzKosten() {}

    // ArrayList<Double> list = new ArrayList<Double>();
    public static void main(String[] args) {
        BerechneDifferenzKosten bdk = new BerechneDifferenzKosten();

        bdk.setKostenMitDEL(12.0);
        bdk.setKostenOhneDEL(3.0);
        System.out.println(bdk.berechneKostenDifferenz());
    }

    public void setKostenMitDEL(double summe) {

        // mitDEL = summe;
        // list.add(summe);
        this.ar[0] = summe;
        System.out.println("Der Wert der setKOsten ist: " + ar[0]);
    }

    public void setKostenOhneDEL(double summe) {

        // ohneDEL = summe;
        // list.add(summe);
        this.ar[1] = summe;
        System.out.println("Der Wert der setKOstenOhne ist: " + ar[1]);
    }

    public String berechneKostenDifferenz() {

        // BerechneKosten bK = new BerechneKosten();
        String diff = "";

        // double mitDEL = Double.parseDouble(bK.rechneGesamtMitDEL());
        // double ohneDEL = Double.parseDouble(bK.rechneGesamtOhneDEL());
        // double mitDEL = list.get(0);
        // double ohneDEL = list.get(1);
        System.out.println("MitDEL: " + ar[0] + " - ohneDEL: " + ar[1]);

        // mitDEL = ar[0];
        // ohneDEL = ar[1];
        summe = ar[0] - ar[1];
        System.out.println("Diff SUmme: " + summe);

        if (summe > 0) {
            diff = "Kosten ohne DEL sind geringer: ";
        } else if (summe < 0) {
            diff = "Kosten mit DEL sind geringer: ";
        } else {
            diff = "Die Kosten beider Verfahren sind gleich";
        }

        return diff;
    }
}
Nun solltest Du auch in der Lage sein, mit dem Array zu arbeiten.

Gruß,
Xan
 
Es ist etwas untergegangen warum deine Zeile:
Java:
double neuWert = wert;
nicht den gewünschten Erfolg gebracht hat.
durch das Vorangestellte double deklarierst du eine NEUE Variable die nur innerhalb des Blocks gültig ist in der sie deklariert wurde(in deinem Fall die Methode).Hast du eine Instanzvariable mit dem selben Namen deklariert, wird diese nicht überschrieben, und bleibt ansprechbar über
Java:
this.neuWert
. die Zuweisung
Java:
neuWert = wert;
gelangt also nicht zur Instanzvariable sondern zur lokalen Vaviable.
Lässt du das double vor neuWert weg, so deklarierst du keine lokale Variable und du sprichst die Instanzvariable an.
 
Zurück