# Problem bei Übergabe von Werten in ein double Array.



## Andre1978 (28. Nov 2008)

Hallo liebe Foren-Besucher!
Ich weiss nach sehr langen probieren nicht, wie ich die Werte aus der Variablen "a2" in das double-Array reinbekomme.... Bitte um Hilfe! PS: Die betroffenen Stellen sind markiert.
Vielen Dank im Vorraus!

Hier der Code:

while ((line = file.readLine()) != null){ 
String c = (line.replaceAll(",", ";" )); 
writer.write(Character.LINE_SEPARATOR);
writer.write(c);
String[] spalten = c.split(";");
int laenge = file.getLineNumber();
String spA = (spalten[0]);                 	
String spB = (spalten[1]);		            	
String spC = (spalten[2]);		            	
String spD = (spalten[3]);		             	
boolean loop = true;
                while(loop){
         			if (laenge <= 60){
            			double a = Double.parseDouble(spB); 	            			
             			String string = (line.valueOf(a+","));
        				String a2 = string;
         				System.out.println(a2);
            			loop = false;
            		}else break;
            	}
        	}
       String b[] = {"00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15",
				"16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32",
				"33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49",
				"50","51","52","53","54","55","56","57","58","59"};    // NICHT ÄNDERN!!!!!
	   double w[] = {a2};          <------- Hier sollen die Werte rein.


----------



## @x.l (28. Nov 2008)

Okay, nochmal zwei Tipps:
Schritt 1. Du musst den String "aufspalten" (englisch: split)
Schritt 2. Du musst jeden Wert konvertieren.


----------



## dayaftereh (28. Nov 2008)

Hey was versuchst du da...

Wenn ich das richtig sehe, willst du eine String zu eine double[] hinzufügen, ich würde dir empfehlen, das du dir ne ArrayList machst und da die double Werte einfügst, das praktische ist, sie wägst außerdem Dynamisch an...


```
ArrayList<Double> w = new ArrayList<Double>();
		
// ... Dan dein Code ...
		
String a2 = "";
		
// ... Dan dein Code ...
		
w.add(Double.parseDouble(a2));
```


----------



## Andre1978 (28. Nov 2008)

Das ist doch schon gemacht... gesplittet und konvertiert. Problem ist, dass die Variable a2 in dem anderen Bereich nicht erkannt wird....


----------



## @x.l (28. Nov 2008)

Dann musst du dafür sorgen dass sie sichtbar ist... Scope


----------



## ARadauer (28. Nov 2008)

also kurz, ein String[] nach einem double[] konvertieren? hab ich das richtig verstanden?


```
String b[] = {"00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15", 
         "16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32", 
         "33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49", 
         "50","51","52","53","54","55","56","57","58","59"}; // NICHT ÄNDERN!!!!!
         
         double w[] = new double[b.length];
         for(int i = 0; i <b.length; i++)
            w[i] = Double.parseDouble(b[i]);
```


----------



## Murray (28. Nov 2008)

Andre1978 hat gesagt.:
			
		

> Problem ist, dass die Variable a2 in dem anderen Bereich nicht erkannt wird....


a2 muss vor der äußeren while-Schleife dekalriert werden; im Moment ist die Variable nur im ersten Zweig der if-Bedingung in der inneren while-Schleife sichtbar.


----------



## Andre1978 (28. Nov 2008)

@x.l hat gesagt.:
			
		

> Dann musst du dafür sorgen dass sie sichtbar ist... Scope



Wie denn? ...


----------



## Murray (28. Nov 2008)

Andre1978 hat gesagt.:
			
		

> @x.l hat gesagt.:
> 
> 
> 
> ...


s.o.


----------



## Andre1978 (28. Nov 2008)

ARadauer hat gesagt.:
			
		

> also kurz, ein String[] nach einem double[] konvertieren? hab ich das richtig verstanden?
> 
> 
> ```
> ...



Hi!
Nicht ganz, der String b[] ist bei meinem Diagramm die x-achse(Zeitachse) (soll so bleiben), ich brauch die y-achse, die Werte sind z.B. 0.02 , 0.30 , 1.80 (double) usw. Mein Problem ist, dass ich das double w[] array nicht gefüllt bekomme aus den Werten der While schleife....


----------



## @x.l (28. Nov 2008)

Andre1978 hat gesagt.:
			
		

> @x.l hat gesagt.:
> 
> 
> 
> ...



Hast du dir den Link überhaupt zu Gemüte geführt?

So wie es jetzt ist, hast du natürlich keinen Zugriff auf a2... Da jede Variable nur innerhalb ihres Blocks sichtbar ist bzw. Gültigkeit hat! Daraus folgern wir was? Richtig! Du musst a2 an einer anderen Stelle deklarieren! (Tipp: Ausserhalb deiner while-Schleifen)


----------



## Andre1978 (28. Nov 2008)

Ok, bitte schau mal nach, ob ich nun richtig gemacht habe:

Hier meine ARRAY-Klasse:

package Diagramm;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.LineNumberReader;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;

public class Arrays{
	public static double a,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,x,y,z;
	public void Daten(){
		LineNumberReader file;
        String line; 
        FileWriter writer;
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
        String datum = (sdf.format(cal.getTime())); 
        Calendar cal3 = Calendar.getInstance();
        SimpleDateFormat sdf3 = new SimpleDateFormat("yyyyMMdd");
        String datum3 = (sdf3.format(cal3.getTime())); 
        String datei = ("load."+datum+".csv");
       try{
	        file = new LineNumberReader( new FileReader("G:/AFUSS/Workspace/load."+datum3+".log"));
        	writer = new FileWriter("G:/AFUSS/Workspace/load."+datum+".csv");
        	System.out.println("Zeile:\tZeit:\t\t\tWert-1\t\t\tWert-2\t\t\tWert-3\n");
        	while ((line = file.readLine()) != null){ 
	    		String c = (line.replaceAll(",", ";" )); 
	    		writer.write(Character.LINE_SEPARATOR);
	    		writer.write(c);
            	String[] spalten = c.split(";");
            	int laenge = file.getLineNumber();
            	String spA = (spalten[0]);      // ZEIT IN MINUTEN - TEILEN IN 24 TEILE!!!
            	String spB = (spalten[1]);		// WERTE - 1 - TEILEN IN 24 TEILE!!!
            	String spC = (spalten[2]);		// WERTE - 2 - TEILEN IN 24 TEILE!!!
            	String spD = (spalten[3]);		// WERTE - 3 - TEILEN IN 24 TEILE!!!
            	boolean loop = true;
            	while(loop){
            		if (laenge <= 60){

            			double a = Double.parseDouble(spB); 	            			
            			String string = a+",";
            			System.out.println(string);
            			loop = false;
            		}else break;

            	}
           	}
       System.out.println("\nDie Datei: "+datei+" wurde erfolgreich erstellt!");
	   	   writer.close();
       }catch (IOException e){ 
    	   System.out.print("Die Datei konnte nicht gefunden werden!"); 
       }
    String b[] = {"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15",
				"16","17","18","19","20","21","22","23","24",};    // NICHT ÄNDERN!!!!!
    double w[] = {a};
	TagesSicht ts = new TagesSicht(w,b,"Uhrzeit in Std.","Werte 1",0);
	ts.show();
	}
}

Hier meine TAGESSICHT-KLasse:

package Diagramm;

import java.awt.*;

public class TagesSicht extends Frame{
    private static final long serialVersionUID = 1L;
	Leinwand zeich;       
    double werte[];
    String texte[];
    String beschriftungXAchse;
    String beschriftungYAchse;
    static int i = 0;              
    int diagrammTyp;
    public static void main (String[] args){
    	Arrays a = new Arrays();
    	a.Daten();
    } 
    /** Konstruktor */
    public TagesSicht(double[] diagrWerte, String[] diagrTexte, String xBeschrift, String yBeschrift, int diagrTyp){
	    //Werte setzen
	    werte = diagrWerte;
	    texte = diagrTexte;
	    beschriftungXAchse = xBeschrift;
	    beschriftungYAchse = yBeschrift;
	    diagrammTyp = diagrTyp;
	    init();
    }
    public void init(){
        setTitle("Balkendiagramm-Tagesübersicht-Aktivitäten");
        Button weg = new Button("Fenster schließen");
        weg.addActionListener(new FensterZu());
        zeich = new Leinwand();
        Panel unten = new Panel();
        unten.setBackground(Color.gray);
        unten.setLayout(new FlowLayout());
        unten.add(weg);
        setLayout(new BorderLayout());
        add(zeich,BorderLayout.CENTER);
        add(unten,BorderLayout.SOUTH);
        pack();
    }
    class Leinwand extends Canvas{
      	private static final long serialVersionUID = 1L;
		public void paint(Graphics g){
        	//Zeichenbefehle
            g.setFont(new Font("Tahoma", Font.PLAIN, 9));
            g.translate(100,330);
            int abstand = 0;
            int xAbstand;
            if(werte.length > 1)
            xAbstand = (int)Math.round(400D / (werte.length - 1));
            else
            xAbstand = 0; 
            //senkrechte Linien
            g.setColor(new Color(255,255,255));
            int xWerte[] = new int[werte.length + 2];
            for(i = 0; i < werte.length; i++){
               g.drawLine(i * xAbstand, 0, i * xAbstand, -250); 
               xWerte_ = i * xAbstand;
            }
            xWerte = xWerte[i - 1];
            xWerte[i + 1] = 0;
            //y-Werte
            //max berechnen
            double max = werte[0];
            for(i = 0; i < werte.length; i++)
                max = Math.max(max, werte);
            if(max < 0) max = 0; //sonst Fehler 
            	double min = werte[0];
            for(i = 0; i < werte.length; i++)
                min = Math.min(min, werte);
                double einheitenJePixel;
            if(min < 0)
                einheitenJePixel = (max+Math.abs(min)) / 250D;
            else
                einheitenJePixel = max / 250D;    //Einheiten je 1px ausrechnen
           //wenn es negative Werte gibt --> x-Achse entsprechend verschieben
           if(min < 0)
               g.translate(0,(int)Math.round(min / einheitenJePixel));
           //Beschriftungen
           ///max neu ausrechnen, falls negativ
           for(i = 0; i < werte.length; i++)
                max = Math.max(max, werte);
           g.setColor(Color.black);
           g.drawString("" + max, - 45, (int)((-1) * max / einheitenJePixel));
           g.drawString("" + min, - 45, (int)((-1) * min / einheitenJePixel));
           //y-Werte aus Werte/eJePx berechnen -1
           int yWerte[] = new int[werte.length + 2];
           for(i = 0; i < werte.length; i++)
               yWerte = (-1) * (int)Math.round(werte / einheitenJePixel);
               yWerte = 0;
               yWerte[i + 1] = 0;
               g.setColor(Color.orange);
               abstand = (int)Math.round((400D-15D) / werte.length);
	           if(abstand < 2) abstand = 5; //mind. 1px Balkenbreite, mind. 1px Abstand zwischen Balken
	               xWerte[0] = 10;
	               for(i = 1; i < werte.length; i++)
	                   xWerte = xWerte[i-1] + abstand;
	                   for(i = 0; i < werte.length; i++){
	                       if(yWerte > 0)
	                           g.fill3DRect(xWerte, 0, abstand / 2, Math.abs(yWerte), true);
	                       else
	                           g.fill3DRect(xWerte, yWerte, abstand / 2, Math.abs(yWerte), true);
	                    }
            //Beschriftungen
	           g.setColor(Color.black);
	           for(i = 0; i < werte.length; i++){
	              int q = 15;
	              if(werte >= 0) 
	            	  q = 15; 
	              else q = -5;
	                 g.drawString(texte ,xWerte, q);
	           }
	        //Koordinatenkreuz
	        //x-Achse
	        g.drawLine(-5, 0, 410, 0);
	        g.drawLine(405, -2, 410, 0);
	        g.drawLine(405, 2, 410, 0);  //Pfeilspitze
	        g.drawString(beschriftungXAchse, 415, 0);
	        //wenn es negative Werte gibt --> x-Achse entsprechend verschieben
	        if(min < 0)
	            g.translate(0, (-1) * (int)Math.round(min / einheitenJePixel));
	        //y-Achse
	        	g.drawLine(0, 5, 0, -270); 
	        	g.drawLine(-2, -265, 0, -270); 
	        	g.drawLine(2, -265, 0, -270);  //Pfeilspitze
	        	g.drawString(beschriftungYAchse, -25 ,-275);  
        }
        public Dimension getMinimumSize(){  //Fenstergröße
            return new Dimension(600, 400);  
        }
        public Dimension getPreferredSize(){             
            return getMinimumSize();  
        }
    }
    //Methoden zum Setzen der Werte für das Diagramm
    public void setBeschriftungXAchse(String xBeschriftung){
        beschriftungXAchse = xBeschriftung;  
    }
    public void setBeschriftungYAchse(String yBeschriftung){
        beschriftungYAchse = yBeschriftung;  
    }
    public void setWerte(double [] diaWerte){
        werte = diaWerte;  
    }
    public void setTexte(String [] diaTexte){
        texte = diaTexte;  
    }
}


Please help..._


----------



## @x.l (28. Nov 2008)

Verwende mal die code-Tags, den Wust kann ja keiner lesen...

Was ist daran (--> der Sichtbarkeit) so schwer zu verstehen? Deklariere deinen String den du in der while-Schleife zusammen baust *ausserhalb* der Schleife. So kannst du ihn danach auch noch nutzen.


```
String a = "";

while(true) {
	// baue den String zusammen
	// mit bspw.: a += ... + ";";
	break;
}
String[] s = a.split(";");
double[] w = new double[s.length];
for(int i = 0; i < s.length; i++)
	w[i] = Double.parseDouble(s[i]);
```


----------



## Andre1978 (28. Nov 2008)

Jetzt habe ich es so gemacht, wie beschrieben, es geht nocht nicht, kann die Werte nicht übernehmen...


----------



## Murray (28. Nov 2008)

Was geht jetzt nicht? Gibt es einen Compile-Fehler?


----------



## Andre1978 (28. Nov 2008)

Andre1978 hat gesagt.:
			
		

> Jetzt habe ich es so gemacht, wie beschrieben, es geht nocht nicht, kann die Werte nicht übernehmen...




```
package Diagramm;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.LineNumberReader;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class Arrays{
	public void Daten(){
		
		LineNumberReader file;
        String line; 
        FileWriter writer;
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
        String datum = (sdf.format(cal.getTime())); 
        Calendar cal3 = Calendar.getInstance();
        SimpleDateFormat sdf3 = new SimpleDateFormat("yyyyMMdd");
        String datum3 = (sdf3.format(cal3.getTime())); 
        String datei = ("load."+datum+".csv");
       try{
	        file = new LineNumberReader( new FileReader("G:/AFUSS/Workspace/load."+datum3+".log"));
        	writer = new FileWriter("G:/AFUSS/Workspace/load."+datum+".csv");
        	System.out.println("Zeile:\tZeit:\t\t\tWert-1\t\t\tWert-2\t\t\tWert-3\n");
        	while ((line = file.readLine()) != null){ 
	    		String c = (line.replaceAll(",", ";" )); 
	    		writer.write(Character.LINE_SEPARATOR);
	    		writer.write(c);
            	String[] spalten = c.split(";");
            	int laenge = file.getLineNumber();
            	String spA = (spalten[0]);      // ZEIT IN MINUTEN - TEILEN IN 24 TEILE!!!
            	String spB = (spalten[1]);		// WERTE - 1 - TEILEN IN 24 TEILE!!!
            	String spC = (spalten[2]);		// WERTE - 2 - TEILEN IN 24 TEILE!!!
            	String spD = (spalten[3]);		// WERTE - 3 - TEILEN IN 24 TEILE!!!
            	String a = ""; 
            	while(true) { 
            	   // baue den String zusammen 
            	   // mit bspw.: a += ... + ";"; 
            	   break; 
            	} 
            	String[] s = a.split(";"); 
            	double[] w = new double[s.length]; 
            	for(int i = 0; i < s.length; i++) 
            	   w[i] = Double.parseDouble(s[i]);
           	}
		    System.out.println("\nDie Datei: "+datei+" wurde erfolgreich erstellt!");
			   	   writer.close();
		    String b[] = {"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15",
						"16","17","18","19","20","21","22","23","24","25","26","27","28","29","30",
						"31","32","33","34","35","36","37","38","39","40","41","42","43","44","45",
						"46","47","48","49","50","51","52","53","54","55","56","57","58","59","60"};
		    TagesSicht ts = new TagesSicht(w,b,"Uhrzeit in Std.","Werte 1",0);
			ts.show();
       }catch (IOException e){ 
    	   System.out.print("Die Datei konnte nicht gefunden werden!"); 
       }
   }
}
```


----------



## Andre1978 (28. Nov 2008)

```
package Diagramm;

import java.awt.*;

public class TagesSicht extends Frame{
    private static final long serialVersionUID = 1L;
	Leinwand zeich;       
    double werte[];
    String texte[];
    String beschriftungXAchse;
    String beschriftungYAchse;
    static int i = 0;              
    int diagrammTyp;
    public static void main (String[] args){
    	Arrays a = new Arrays();
    	a.Daten();
    } 
    /** Konstruktor */
    public TagesSicht(double[] diagrWerte, String[] diagrTexte, String xBeschrift, String yBeschrift, int diagrTyp){
	    //Werte setzen
	    werte = diagrWerte;
	    texte = diagrTexte;
	    beschriftungXAchse = xBeschrift;
	    beschriftungYAchse = yBeschrift;
	    diagrammTyp = diagrTyp;
	    init();
    }
    public void init(){
        setTitle("Balkendiagramm-Tagesübersicht-Aktivitäten");
        Button weg = new Button("Fenster schließen");
        weg.addActionListener(new FensterZu());
        zeich = new Leinwand();
        Panel unten = new Panel();
        unten.setBackground(Color.gray);
        unten.setLayout(new FlowLayout());
        unten.add(weg);
        setLayout(new BorderLayout());
        add(zeich,BorderLayout.CENTER);
        add(unten,BorderLayout.SOUTH);
        pack();
    }
    class Leinwand extends Canvas{
      	private static final long serialVersionUID = 1L;
		public void paint(Graphics g){
        	//Zeichenbefehle
            g.setFont(new Font("Tahoma", Font.PLAIN, 9));
            g.translate(100,330);
            int abstand = 0;
            int xAbstand;
            if(werte.length > 1)
            xAbstand = (int)Math.round(400D / (werte.length - 1));
            else
            xAbstand = 0; 
            //senkrechte Linien
            g.setColor(new Color(255,255,255));
            int xWerte[] = new int[werte.length + 2];
            for(i = 0; i < werte.length; i++){
               g.drawLine(i * xAbstand, 0, i * xAbstand, -250); 
               xWerte[i] = i * xAbstand;
            }
            xWerte[i] = xWerte[i - 1];
            xWerte[i + 1] = 0;
            //y-Werte
            //max berechnen
            double max = werte[0];
            for(i = 0; i < werte.length; i++)
                max = Math.max(max, werte[i]);
            if(max < 0) max = 0; //sonst Fehler 
            	double min = werte[0];
            for(i = 0; i < werte.length; i++)
                min = Math.min(min, werte[i]);
                double einheitenJePixel;
            if(min < 0)
                einheitenJePixel = (max+Math.abs(min)) / 250D;
            else
                einheitenJePixel = max / 250D;    //Einheiten je 1px ausrechnen
           //wenn es negative Werte gibt --> x-Achse entsprechend verschieben
           if(min < 0)
               g.translate(0,(int)Math.round(min / einheitenJePixel));
           //Beschriftungen
           ///max neu ausrechnen, falls negativ
           for(i = 0; i < werte.length; i++)
                max = Math.max(max, werte[i]);
           g.setColor(Color.black);
           g.drawString("" + max, - 45, (int)((-1) * max / einheitenJePixel));
           g.drawString("" + min, - 45, (int)((-1) * min / einheitenJePixel));
           //y-Werte aus Werte[i]/eJePx berechnen -1
           int yWerte[] = new int[werte.length + 2];
           for(i = 0; i < werte.length; i++)
               yWerte[i] = (-1) * (int)Math.round(werte[i] / einheitenJePixel);
               yWerte[i] = 0;
               yWerte[i + 1] = 0;
               g.setColor(Color.orange);
               abstand = (int)Math.round((400D-15D) / werte.length);
	           if(abstand < 2) abstand = 5; //mind. 1px Balkenbreite, mind. 1px Abstand zwischen Balken
	               xWerte[0] = 10;
	               for(i = 1; i < werte.length; i++)
	                   xWerte[i] = xWerte[i-1] + abstand;
	                   for(i = 0; i < werte.length; i++){
	                       if(yWerte[i] > 0)
	                           g.fill3DRect(xWerte[i], 0, abstand / 2, Math.abs(yWerte[i]), true);
	                       else
	                           g.fill3DRect(xWerte[i], yWerte[i], abstand / 2, Math.abs(yWerte[i]), true);
	                    }
            //Beschriftungen
	           g.setColor(Color.black);
	           for(i = 0; i < werte.length; i++){
	              int q = 15;
	              if(werte[i] >= 0) 
	            	  q = 15; 
	              else q = -5;
	                 g.drawString(texte[i] ,xWerte[i], q);
	           }
	        //Koordinatenkreuz
	        //x-Achse
	        g.drawLine(-5, 0, 410, 0);
	        g.drawLine(405, -2, 410, 0);
	        g.drawLine(405, 2, 410, 0);  //Pfeilspitze
	        g.drawString(beschriftungXAchse, 415, 0);
	        //wenn es negative Werte gibt --> x-Achse entsprechend verschieben
	        if(min < 0)
	            g.translate(0, (-1) * (int)Math.round(min / einheitenJePixel));
	        //y-Achse
	        	g.drawLine(0, 5, 0, -270); 
	        	g.drawLine(-2, -265, 0, -270); 
	        	g.drawLine(2, -265, 0, -270);  //Pfeilspitze
	        	g.drawString(beschriftungYAchse, -25 ,-275);  
        }
        public Dimension getMinimumSize(){  //Fenstergröße
            return new Dimension(600, 400);  
        }
        public Dimension getPreferredSize(){             
            return getMinimumSize();  
        }
    }
    //Methoden zum Setzen der Werte für das Diagramm
    public void setBeschriftungXAchse(String xBeschriftung){
        beschriftungXAchse = xBeschriftung;  
    }
    public void setBeschriftungYAchse(String yBeschriftung){
        beschriftungYAchse = yBeschriftung;  
    }
    public void setWerte(double [] diaWerte){
        werte = diaWerte;  
    }
    public void setTexte(String [] diaTexte){
        texte = diaTexte;  
    }
}
```


----------



## Andre1978 (28. Nov 2008)

Wie gesagt, wenn ich das double[] w ARRAY manuell fülle, dann siehts gut aus!
Aber wenn ich die Werte aus der While-Schleife nehmen möchte, dann übernimmt er die Werte nicht...


Hier mal ein Code, der mit manuellen gesetzten Werten top funktioniert: (2 Klassen!)


```
package Diagramm;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.LineNumberReader;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class Arrays{
	public double a,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,x,y,z;
	public void Daten(){
		LineNumberReader file;
        String line; 
        FileWriter writer;
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
        String datum = (sdf.format(cal.getTime())); 
        Calendar cal3 = Calendar.getInstance();
        SimpleDateFormat sdf3 = new SimpleDateFormat("yyyyMMdd");
        String datum3 = (sdf3.format(cal3.getTime())); 
        String datei = ("load."+datum+".csv");
       try{
	        file = new LineNumberReader( new FileReader("G:/AFUSS/Workspace/load."+datum3+".log"));
        	writer = new FileWriter("G:/AFUSS/Workspace/load."+datum+".csv");
        	System.out.println("Zeile:\tZeit:\t\t\tWert-1\t\t\tWert-2\t\t\tWert-3\n");
        	while ((line = file.readLine()) != null){ 
	    		String c = (line.replaceAll(",", ";" )); 
	    		writer.write(Character.LINE_SEPARATOR);
	    		writer.write(c);
            	String[] spalten = c.split(";");
            	int laenge = file.getLineNumber();
            	String spA = (spalten[0]);      // ZEIT IN MINUTEN - TEILEN IN 24 TEILE!!!
            	String spB = (spalten[1]);		// WERTE - 1 - TEILEN IN 24 TEILE!!!
            	String spC = (spalten[2]);		// WERTE - 2 - TEILEN IN 24 TEILE!!!
            	String spD = (spalten[3]);		// WERTE - 3 - TEILEN IN 24 TEILE!!!
         	
            	boolean loop = true;
	            	while(loop){
	            		if (laenge <= 60){
	            			double a = Double.parseDouble(spB); 	            			
	            			System.out.println(a);
	            			
	            			loop = false;
	            		}else break;
	            	}
            	
          	}
       System.out.println("\nDie Datei: "+datei+" wurde erfolgreich erstellt!");
	   	   writer.close();
       }catch (IOException e){ 
    	   System.out.print("Die Datei konnte nicht gefunden werden!"); 
       }
    String b[] = {"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15",
				"16","17","18","19","20","21","22","23","00"};    // NICHT ÄNDERN!!!!!
	double w[] = {1.3,4.6,4.3,6.3,2.3,3.2,3.3};  // Und so weiter...
	TagesSicht ts = new TagesSicht(w,b,"Uhrzeit in Std.","Werte 1",0);
	ts.show();
	}
}
```
package Diagramm;

import java.awt.*;

public class TagesSicht extends Frame{
    private static final long serialVersionUID = 1L;
	Leinwand zeich;       
    double werte[];
    String texte[];
    String beschriftungXAchse;
    String beschriftungYAchse;
    static int i = 0;              
    int diagrammTyp;
    public static void main (String[] args){
    	Arrays a = new Arrays();
    	a.Daten();
    } 
    /** Konstruktor */
    public TagesSicht(double[] diagrWerte, String[] diagrTexte, String xBeschrift, String yBeschrift, int diagrTyp){
	    //Werte setzen
	    werte = diagrWerte;
	    texte = diagrTexte;
	    beschriftungXAchse = xBeschrift;
	    beschriftungYAchse = yBeschrift;
	    diagrammTyp = diagrTyp;
	    init();
    }
    public void init(){
        setTitle("Balkendiagramm-Tagesübersicht-Aktivitäten");
        Button weg = new Button("Fenster schließen");
        weg.addActionListener(new FensterZu());
        zeich = new Leinwand();
        Panel unten = new Panel();
        unten.setBackground(Color.gray);
        unten.setLayout(new FlowLayout());
        unten.add(weg);
        setLayout(new BorderLayout());
        add(zeich,BorderLayout.CENTER);
        add(unten,BorderLayout.SOUTH);
        pack();
    }
    class Leinwand extends Canvas{
      	private static final long serialVersionUID = 1L;
		public void paint(Graphics g){
        	//Zeichenbefehle
            g.setFont(new Font("Tahoma", Font.PLAIN, 9));
            g.translate(100,330);
            int abstand = 0;
            int xAbstand;
            if(werte.length > 1)
            xAbstand = (int)Math.round(400D / (werte.length - 1));
            else
            xAbstand = 0; 
            //senkrechte Linien
            g.setColor(new Color(255,255,255));
            int xWerte[] = new int[werte.length + 2];
            for(i = 0; i < werte.length; i++){
               g.drawLine(i * xAbstand, 0, i * xAbstand, -250); 
               xWerte_ = i * xAbstand;
            }
            xWerte = xWerte[i - 1];
            xWerte[i + 1] = 0;
            //y-Werte
            //max berechnen
            double max = werte[0];
            for(i = 0; i < werte.length; i++)
                max = Math.max(max, werte);
            if(max < 0) max = 0; //sonst Fehler 
            	double min = werte[0];
            for(i = 0; i < werte.length; i++)
                min = Math.min(min, werte);
                double einheitenJePixel;
            if(min < 0)
                einheitenJePixel = (max+Math.abs(min)) / 250D;
            else
                einheitenJePixel = max / 250D;    //Einheiten je 1px ausrechnen
           //wenn es negative Werte gibt --> x-Achse entsprechend verschieben
           if(min < 0)
               g.translate(0,(int)Math.round(min / einheitenJePixel));
           //Beschriftungen
           ///max neu ausrechnen, falls negativ
           for(i = 0; i < werte.length; i++)
                max = Math.max(max, werte);
           g.setColor(Color.black);
           g.drawString("" + max, - 45, (int)((-1) * max / einheitenJePixel));
           g.drawString("" + min, - 45, (int)((-1) * min / einheitenJePixel));
           //y-Werte aus Werte/eJePx berechnen -1
           int yWerte[] = new int[werte.length + 2];
           for(i = 0; i < werte.length; i++)
               yWerte = (-1) * (int)Math.round(werte / einheitenJePixel);
               yWerte = 0;
               yWerte[i + 1] = 0;
               g.setColor(Color.orange);
               abstand = (int)Math.round((400D-15D) / werte.length);
	           if(abstand < 2) abstand = 5; //mind. 1px Balkenbreite, mind. 1px Abstand zwischen Balken
	               xWerte[0] = 10;
	               for(i = 1; i < werte.length; i++)
	                   xWerte = xWerte[i-1] + abstand;
	                   for(i = 0; i < werte.length; i++){
	                       if(yWerte > 0)
	                           g.fill3DRect(xWerte, 0, abstand / 2, Math.abs(yWerte), true);
	                       else
	                           g.fill3DRect(xWerte, yWerte, abstand / 2, Math.abs(yWerte), true);
	                    }
            //Beschriftungen
	           g.setColor(Color.black);
	           for(i = 0; i < werte.length; i++){
	              int q = 15;
	              if(werte >= 0) 
	            	  q = 15; 
	              else q = -5;
	                 g.drawString(texte ,xWerte, q);
	           }
	        //Koordinatenkreuz
	        //x-Achse
	        g.drawLine(-5, 0, 410, 0);
	        g.drawLine(405, -2, 410, 0);
	        g.drawLine(405, 2, 410, 0);  //Pfeilspitze
	        g.drawString(beschriftungXAchse, 415, 0);
	        //wenn es negative Werte gibt --> x-Achse entsprechend verschieben
	        if(min < 0)
	            g.translate(0, (-1) * (int)Math.round(min / einheitenJePixel));
	        //y-Achse
	        	g.drawLine(0, 5, 0, -270); 
	        	g.drawLine(-2, -265, 0, -270); 
	        	g.drawLine(2, -265, 0, -270);  //Pfeilspitze
	        	g.drawString(beschriftungYAchse, -25 ,-275);  
        }
        public Dimension getMinimumSize(){  //Fenstergröße
            return new Dimension(600, 400);  
        }
        public Dimension getPreferredSize(){             
            return getMinimumSize();  
        }
    }
    //Methoden zum Setzen der Werte für das Diagramm
    public void setBeschriftungXAchse(String xBeschriftung){
        beschriftungXAchse = xBeschriftung;  
    }
    public void setBeschriftungYAchse(String yBeschriftung){
        beschriftungYAchse = yBeschriftung;  
    }
    public void setWerte(double [] diaWerte){
        werte = diaWerte;  
    }
    public void setTexte(String [] diaTexte){
        texte = diaTexte;  
    }
}


		Code:In die Zwischenablage kopieren




_


----------



## Guest (28. Nov 2008)

Du könntest zumindest sagen, warum Deiner Meinung nach etwas nicht stimmt - wenn das Programm übersetzbar ist und die Ausgabe gut aussieht, hört sich das doch eigentlich nicht verkehrt an.


----------



## @x.l (28. Nov 2008)

Ich soll die Klassen so wie sie sind nehmen? Sicher? 

Schau dir mal den Code ab zeile 39 deiner Klasse Arrays an - was steht denn da?


----------



## Murray (28. Nov 2008)

Schlimmer finde ich den Code ab Zeile 25


----------



## @x.l (28. Nov 2008)

Nimm, ich hab keinen Bock mehr:


```
Vector<Double> daten = new Vector<Double>();
try{ 
       file = new LineNumberReader( new FileReader("G:/AFUSS/Workspace/load."+datum3+".log")); 
       writer = new FileWriter("G:/AFUSS/Workspace/load."+datum+".csv"); 
       System.out.println("Zeile:\tZeit:\t\t\tWert-1\t\t\tWert-2\t\t\tWert-3\n"); 
       while ((line = file.readLine()) != null){ 
         String c = (line.replaceAll(",", ";" )); 
         writer.write(Character.LINE_SEPARATOR); 
         writer.write(c); 
           String[] spalten = c.split(";"); 
           int laenge = file.getLineNumber(); 
           String spA = (spalten[0]);      // ZEIT IN MINUTEN - TEILEN IN 24 TEILE!!! 
           String spB = (spalten[1]);      // WERTE - 1 - TEILEN IN 24 TEILE!!! 
           String spC = (spalten[2]);      // WERTE - 2 - TEILEN IN 24 TEILE!!! 
           String spD = (spalten[3]);      // WERTE - 3 - TEILEN IN 24 TEILE!!! 
         
           boolean loop = true; 
              while(loop){ 
                 if (laenge <= 60){ 
                    daten.add(new Double(spB));
                    loop = false; 
                 }else break; 
              } 
            
         } 
   System.out.println("\nDie Datei: "+datei+" wurde erfolgreich erstellt!"); 
        writer.close(); 
   }catch (IOException e){ 
      System.out.print("Die Datei konnte nicht gefunden werden!"); 
   } 
String b[] = {"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15", 
        "16","17","18","19","20","21","22","23","00"};    // NICHT ÄNDERN!!!!! 

double[] w = new double[daten.size()];
for(int i = 0; i < daten.size(); i++)
	w[i] = daten.get(i).doubleValue();
```


----------

