Berechnete Werte in einer Klasse weiternutzen!

Status
Nicht offen für weitere Antworten.

mrkingm

Mitglied
Hallo liebe Java User!
Das ist mein Code

ich habe das Problem, das ich einfach mein xMin xMax, yMin, yMax nicht weiterbenutzen kann.
Die Werte sollen unter anderem die Start und Endwerte meines KoordinatenSystems werden.


Code:
public void initKoordinatenSys()
        {
		BufferedReader br;
		ArrayList<Double> x = new ArrayList<Double>(); 
		ArrayList<Double> y = new ArrayList<Double>(); 
		String temp = null; 
		String[] ar = null; 
		double xMax = Double.MIN_VALUE;
		double xMin = Double.MAX_VALUE;
		double yMax = Double.MIN_VALUE;
		double yMin = Double.MAX_VALUE;

		try 
	    {
			br = new BufferedReader(
				    new FileReader("ausgabe.dat"));
			
			while ((temp = br.readLine()) != null) 
			{ 
			   ar = temp.split(" "); 
			   x.add(Double.parseDouble(ar[0])); 
			   y.add(Double.parseDouble(ar[1]));
			}
	    }
		catch (IOException e) 
	    {
	      System.out.println("Fehler beim Erstellen der Datei");
	    }
		for (int i = 0; i < x.size(); i++)
		{
		   if(x.get(i) > xMax) {xMax = x.get(i);}
		   if(x.get(i) < xMin) {xMin = x.get(i);}
		   if(y.get(i) > yMax) {yMax = y.get(i);}
		   if(y.get(i) < yMin) {yMin = y.get(i);}
		}
		
		
		xStep = (xMax-xMin)/10;		// zehn teilstriche 
			
		yStep = (yMax-yMin)/10;		// zehn teilstriche 
		
				
            }

public void koordinatenSystem(Graphics g)
    {
            	g.setColor(Color.black);
    	g.drawLine(calcPosX(xMin),calcPosY(0),calcPosX(xMax),calcPosY(0));//x achse
	g.drawLine(calcPosX(0),calcPosY(yMin),calcPosX(0),calcPosY(yMax));//y achse
    }

hier in koordinatenSystem sollen sie unter anderem in Anwendung kommen.
 
dazu sind meist setter und getter notwendig

zb

public double getX(){
return x;
}

hab ich vergessen das letzte mal
Es gibt eine Klasse Point unter
java.awt.Point
oder Point2D...
 
ach ja ..dazu müssen sie natürlich globale variablen sein
also nicht in der Methoode deklariert werden
sonst wirds nix
 
hab ich schon, aber public double funktioniert ehh net, wenn public int getX()
{
resturn xMin;
}
ich komme da trotzdem nicht weiter :-(
 
java.awt.geom.Point2D.Double
ein Punkt mit doubles

das Problem ist, dass nach dem Ende der Funktion
der Garbabe Collector alle Lokalen Variablen
löscht.
Bei dir alles!!
Somit ist es nicht mehr möglich auf diese Variablen zuzugreifen
Es müssen GLOBALE variablen eingeführ werden.
Auch das Koordinaten sys ist weg!
 
Code:
public class Point{
 private double x;   //dlobale Variable

 //getter für globale Vars
 public double getX(){
 return x;
 }

 public void doStuff(){
  int i = 0; //lokale Variable
 }//und schon gelöscht
}

x ist auch nach dem aufruf der Methode verfügbar. Solange die Klasse existert ( als Objekt)
 
Ist doch ganz einfach. Alle Variablen die nicht aus der Methode raus übergeben werden, sind nach dem Ende der Methode (Das letzte } ) nicht mehr ansprechbar.
dh
das alles:
Code:
BufferedReader br;
      ArrayList<Double> x = new ArrayList<Double>();
      ArrayList<Double> y = new ArrayList<Double>();
      String temp = null;
      String[] ar = null;
      double xMax = Double.MIN_VALUE;
      double xMin = Double.MAX_VALUE;
      double yMax = Double.MIN_VALUE;
      double yMin = Double.MAX_VALUE;
existiert nur in der Methode "initKoordinatenSys". Sobald diese beendet ist, sind die Variablen verloren. Du musst Variablen die für die ganze Klasse nutzbar sein sollen, einfach ausserhalb einer MEthode deklarieren.
 
so einfach kann manchmal eine Lösung sein! :-

double xMax = Double.MIN_VALUE;
double xMin = Double.MAX_VALUE;
double yMax = Double.MIN_VALUE;
double yMin = Double.MAX_VALUE;

das hier musste ich einfach als global eingeben mehr net!
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben