Problem bei Übergabe von Werten in ein double Array.

Status
Nicht offen für weitere Antworten.

Andre1978

Mitglied
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.
 

dayaftereh

Top Contributor
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...

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

Andre1978

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

ARadauer

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

Code:
         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

Top Contributor
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

Mitglied
ARadauer hat gesagt.:
also kurz, ein String[] nach einem double[] konvertieren? hab ich das richtig verstanden?

Code:
         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]);

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

Bekanntes Mitglied
Andre1978 hat gesagt.:
@x.l hat gesagt.:
Dann musst du dafür sorgen dass sie sichtbar ist... Scope

Wie denn? ...

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

Mitglied
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

Bekanntes Mitglied
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.

Code:
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

Mitglied
Andre1978 hat gesagt.:
Jetzt habe ich es so gemacht, wie beschrieben, es geht nocht nicht, kann die Werte nicht übernehmen...
Code:
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

Mitglied
Code:
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

Mitglied
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!)

Code:
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:
 
G

Guest

Gast
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

Bekanntes Mitglied
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?
 

@x.l

Bekanntes Mitglied
Nimm, ich hab keinen Bock mehr:

Code:
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();
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
Max246Sch Backtracking Problem Box Filler Allgemeine Java-Themen 6
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
A Java modul Problem Allgemeine Java-Themen 4
D Read JSON File Problem Allgemeine Java-Themen 9
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
J Problem mit JasperReports Allgemeine Java-Themen 8
M log4j Problem mit jlink Allgemeine Java-Themen 19
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
P Selenium . getText Problem Allgemeine Java-Themen 9
A Jar zu Exe Problem Allgemeine Java-Themen 13
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
A Thread.sleep Problem Allgemeine Java-Themen 2
A Problem bei der Nachbarschafttest Allgemeine Java-Themen 11
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
Splayfer JDA Problem mit MessageCounter Allgemeine Java-Themen 0
Splayfer Problem mit BufferedWriter Allgemeine Java-Themen 3
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
N Maven Problem mit Datenbanktreiber (H2 Embedded) Allgemeine Java-Themen 12
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
C ArrayList Problem Allgemeine Java-Themen 3
kev34 nim-Spiel problem Allgemeine Java-Themen 1
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
G Welches Problem besteht bei den Typparametern? Allgemeine Java-Themen 5
temi Problem mit Aufrufreihenfolge bei Vererbung Allgemeine Java-Themen 3
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
T PIM basierend auf netbeans via AnyDesk Problem Allgemeine Java-Themen 3
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
Kirby.exe Verständnis Problem bei Rucksack Problem Allgemeine Java-Themen 6
B Eclipse-Lombok-Problem Allgemeine Java-Themen 19
I Input/Output ObjectOutputStream - Problem Allgemeine Java-Themen 7
1 Multiple Choice Knapsack- Problem Allgemeine Java-Themen 2
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
E Problem mit Gridlayout und Button Allgemeine Java-Themen 2
A Array Problem Allgemeine Java-Themen 8
bueseb84 Problem Allgemeine Java-Themen 0
S Problem mit Arrays Allgemeine Java-Themen 1
D Nullpointer Exception Problem Allgemeine Java-Themen 5
B Problem mit meinen Klassen Allgemeine Java-Themen 6
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
J Problem bei Install java 13 Allgemeine Java-Themen 3
X Profitable Reise Problem Allgemeine Java-Themen 32
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
Dann07 Problem mit JavaMail API Allgemeine Java-Themen 26
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
L Klassen Algorithmus für das folgende Problem entwickeln? Allgemeine Java-Themen 30
J Clear-Problem Allgemeine Java-Themen 10
B Problem zu einem Java Projekt Allgemeine Java-Themen 6
S JFileChooser Problem Allgemeine Java-Themen 4
M Traveling Salesman - MST Heuristik Problem Allgemeine Java-Themen 4
J Traveling Salesman Problem Allgemeine Java-Themen 14
E Java Editor Problem mit 2er Exceptions Allgemeine Java-Themen 12
C code oder Bibliotheken für 2-Center Problem Allgemeine Java-Themen 4
M Salesman Problem - Bruteforce Algorithmus Allgemeine Java-Themen 23
S Methoden Problem mit NullPointerException Allgemeine Java-Themen 9
Javafan02 Problem mit if-clause Allgemeine Java-Themen 17
J Lombok Problem mit Konstruktoren bei Verberbung Allgemeine Java-Themen 1
kodela Event Handling Problem mit der Alt-Taste Allgemeine Java-Themen 16
W Threads Problem Allgemeine Java-Themen 15
D (Verständnis-)Problem mit Unterklasse Allgemeine Java-Themen 4
S Problem mit Generic bei unmodifiableCollection Allgemeine Java-Themen 4
S jserialcomm Problem Allgemeine Java-Themen 1
Flynn Thread-Problem... Allgemeine Java-Themen 2
J Generische Interface - Problem Allgemeine Java-Themen 3
G Problem beim GUI Allgemeine Java-Themen 9
L Applet Problem "security: Trusted libraries list file not found" ? Allgemeine Java-Themen 7
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
T Problem mit externen Datenbankzugriff über SSH Tunnel Allgemeine Java-Themen 4
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
S Java OpenOffice Problem mit Windows-Benutzerwechsel Allgemeine Java-Themen 19
K Threads RAM Problem Allgemeine Java-Themen 20
P Operatoren Problem mit Zähler in recursiver Schleife Allgemeine Java-Themen 2
C Int Problem Allgemeine Java-Themen 8
C J2V8 NodeJs Java Bride Problem und Frage!?!? Allgemeine Java-Themen 1
J Problem bei Hashmap Key-Abfrage Allgemeine Java-Themen 4
C Webseiten Programm problem Allgemeine Java-Themen 5
M LocalDate Problem Allgemeine Java-Themen 4
J "Problem Objektorientierung" Allgemeine Java-Themen 20
geekex Problem Meldung! Was tun?! Allgemeine Java-Themen 19
T Klassen Override Problem Allgemeine Java-Themen 7
L Unbekanntes Problem Allgemeine Java-Themen 1
FrittenFritze Problem mit einer JComboBox, Event temporär deaktivieren Allgemeine Java-Themen 11
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
F HTTPS Zertifikat Problem Allgemeine Java-Themen 3
M OpenCV KNearest Problem Allgemeine Java-Themen 0
Tommy Nightmare Project Euler: Problem 22 Allgemeine Java-Themen 2
C Abstrakte Klasse, lokale Variable-Problem Allgemeine Java-Themen 1
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
P Eclipse Projekt anlegen macht Problem Allgemeine Java-Themen 1
RalleYTN META-INF/services Problem Allgemeine Java-Themen 3
F Java Mail Problem: Authentifizierung wird nicht immer mitgeschickt Allgemeine Java-Themen 1
I Problem beim Aufrufen, von Objektmethoden/ -variablen Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben