printf Daten aus der Tabelle in Excel übernehmen

timi042

Neues Mitglied
Liebe Community,

ich arbeite an einem Program das die Aufladung eines Kondensators berechnet und mir die Daten die ich über printf in einer Tabelle ausgeben möchte in eine CSV Datei schreibt damit ich später in Excel ein Diagramm erstellen kann dass mir die Aufladung in einem Diagramm zeigt. Die Achsen sollen mit Spannung (U) und Zeit (t) beschriftet sein.
Bitte beachtet ich bin Anfänger :)

Hier mein code:
Java:
import jxl.*;
import java.io.*;
import java.io.File;
import java.io.IOException;
import java.text.BreakIterator;
import java.util.Date;
import jxl.*;
import jxl.write.*;
import jxl.write.Boolean;
import jxl.write.Number;
import jxl.write.biff.RowsExceededException;
import java.util.*;
public class KondensatorAufladung {
  
    public static void main(String[] args) {
      
  
        try {
            InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(isr);
        System.out.print("Gib U ein: "+"\n");
        double u = Integer.parseInt(br.readLine());
        System.out.print("Gib I ein: \n");
        double i = Integer.parseInt(br.readLine());
        System.out.print("Gib R (Vorwiederstand) ein: \n");
        double r = Integer.parseInt(br.readLine());
        System.out.print("Gib t (in ms) ein: \n");
        double t = Integer.parseInt(br.readLine());
      
        //Hier wird gerechnet
        double q = i*t;
        double c = q/u;
        double zk = r*c; //zk ist die Zeitkonstante(T)
      
      
        //System.out.printf("%.2f",t);
        System.out.printf("%10s    |%10s %n", "Tabelle", "Zeit (t)");
        System.out.println("------------------------------" );
        //System.out.printf("%10.2f    |%10.2f    |%10.2f    |%10.2f %n" , 1.768, 22.777, 333.8888, 4444.777654);
        //System.out.printf("%10.2f    |%10.2f    |%10.2f    |%10.2f %n" , 12.999, 123.875478, 124.46, 125345.5463728);
      
        float q_2 = (float) q;
        float i_start=-10;
        //float t_start=-1;
        float u_start=-10;
      
      
        for (int a=0; a<=(u/10); a++){
          
          
            u_start=u_start+10;
            i_start=i_start+10;
            float t_stelle=q_2/i_start;
            //t_start=t_start+1;
            //String i_string = String.valueOf(i_start);
            //String t_string = String.valueOf(t_start);
            System.out.printf("%10.2f    |%10.2f%n" , u_start, t_stelle);
          
          
          
          
          
        }
      
      
      
      
      
      
      
            File exlFile = new File("h:/test_excel.xls");
            WritableWorkbook writableWorkbook = Workbook.createWorkbook(exlFile);
          
         
            WritableSheet writableSheet = writableWorkbook.createSheet("Kondensator Aufladung", 0);
            Label ueberschrift1_label = new Label(0,0, "Werte für U:");
            Label u_label = new Label(0, 1, String.valueOf(u));
            Label ueberschrift2_label = new Label(1,0, "Werte für Q:");
            Label q_label = new Label(1,1, String.valueOf(q));
            Label ueberschrift3_label = new Label(2,0, "Berechnete Werte für Kapazität (C):");
            Label c_label = new Label(2,1, String.valueOf(c));
            Label ueberschrift4_label = new Label(0,3, "Wert für I:");
            Label i_label = new Label(0,4, String.valueOf(i));
            Label ueberschrift5_label = new Label(1,3, "Wert für t:");
            Label t_label = new Label(1,4, String.valueOf(t));
          
            //Add the created Cells to the sheet
            writableSheet.addCell(u_label);
            writableSheet.addCell(q_label);
            writableSheet.addCell(c_label);
            writableSheet.addCell(i_label);
            writableSheet.addCell(t_label);
            writableSheet.addCell(ueberschrift1_label);
            writableSheet.addCell(ueberschrift2_label);
            writableSheet.addCell(ueberschrift3_label);
            writableSheet.addCell(ueberschrift4_label);
            writableSheet.addCell(ueberschrift5_label);
          
            //Write and close the workbook
            writableWorkbook.write();
            writableWorkbook.close();
          
          
          
            FileWriter csv_datei = new FileWriter("h:/testfile.csv");
            csv_datei.append(String.valueOf(u));
            csv_datei.append('\n');
            csv_datei.append(String.valueOf(q));
            csv_datei.append("\n");
            csv_datei.append(String.valueOf(c));
            csv_datei.append("\n");
            csv_datei.append(String.valueOf(i));
            csv_datei.append("\n");
            csv_datei.append(String.valueOf(t));
            csv_datei.append("\n");
          
            csv_datei.flush();
            csv_datei.close();
          
        } catch (IOException e) {
            e.printStackTrace();
        } catch (RowsExceededException e) {
            e.printStackTrace();
        } catch (WriteException e) {
            e.printStackTrace();
        }
    }
}

Edit:
Verbesserungsvorschläge höre ich gerne :)
 

dayaftereh

Top Contributor
Hey, bin mir noch nicht sicher was du von der Community hören willst. Jeder Code kann immer verbessert werden.

Ich sehe folgende Punkte:
  1. Was ist, wenn der Nutzer einen Buchstaben anstatt eine Zahl für U, I, etc. eingibt ?
  2. Man könnte dein Programm in Methoden aufteilen. Zum Beispiel Lese Eingabe Werte, berechne Werte, schreibe xls oder CSV.
  3. Die Output Files sind hard gecoded , immer schlecht.
  4. Man könnte Klassen einführen um besser zu Kapseln.
  5. Tests zum prüfen ob dein Code korrekt ist.
Hoffe das trifft deine Erwartungen für deine Frage...
 

timi042

Neues Mitglied
Meine Frage ist wie ich eine Tabelle die ich über printf auf der Console ausgebe in eine csv Datei schreiben kann so das ich aus den errechneten Werten ein Diagramm zeichenen kann in Excel :)
 

Jardcore

Top Contributor
Okay, also die Frage war wohl, wie kann man den Code verbessern ;)

Also Regel Nummer 1 im Code Club lautet: Dont repeat yourself.
Wie mein dayafterreh schon anmerkte solltest du für sowas code in Methoden auslagern.

Java ist eine objektorientierte Programmiersprache, dein vorgehen ist eher prozedural.
Objektorientiert heißt das du versuchst Dinge aus der Realität in die virtuelle Welt zu überführen.

In der Realität würde man wahrscheinlich ein Messgerät nehmen und Werte messen und die in eine Liste eintragen. --> Objektorientiert würde man dann Objekte (Klassen) anlegen, eine Klasse Messgerät, welches man auf die gewünschte Einheit umstellen kann. Und vielleicht noch eine Liste mit Messwerten.

Aber das wäre wohl mit Kanonen auf Spatzen geschossen.

Du müsstest eine Instanz deines KondensatorAufladung Objekt in der main() Methode erstellen.
Dann kannst du deinem Objekt ein paar Methoden spendieren, z.B:

Java:
public class KondensatorAufladung {

    private double i, u, r, t, q, c, zk;

    public static void main(String[] args) {
        KondenstatorAufladung kondenstator = new KondenstatorAufladung();
    }

    public KondensatorAufladung() {
        leseWerteEin();
        rechne();
        // usw.
    }

    private double leseWert(String text, BufferedReader br) {
        System.out.println(String.format("Gib %s ein:", text));
      
        try {
            return Double.parseDouble(br.readLine());
        } catch (IOException e) {
            // Fehlerbehandlung bei Einlesen
        }
      
        throw new NumberFormatException();
    }
  
    private void leseWerteEin() {
        try(InputStreamReader in = new InputStreamReader(System.in)) {
            BufferedReader br = new BufferedReader(in);
          
            u = leseWert("U", br);
            i = leseWert("I", br);
            r = leseWert("R (Vorwiederstand)", br);
            t = leseWert("t (in ms)", br);
    
        } catch (IOException e) {
            // Fehlerbehandlung bei Einlesen
        }

    private void rechne() {
            q = i * t;
            c = q / u;
            zk = r * c; // zk ist die Zeitkonstante(T)
    }
}

Edit: Okay jetzt war die konkrete Frage da^^
Also in einer Csv Datei sind die einzelnen Spalten mit ";" getrennt und die Zeilen durch ein Zeilenumbruch "\n"

Das heißt du musst nur dafür sorgen das deine einzelnen Werte mit einem ";" voneinander getrennt und mit "\n" am Ende jeder Zeile in eine Textdatei mit der Endung .csv gespeichert werden.
 

VfL_Freak

Top Contributor
Moin,

BTW:
ich arbeite an einem Program das die Aufladung eines Kondensators berechnet und mir die Daten die ich über printf in einer Tabelle ausgeben möchte in eine CSV Datei schreibt damit ich später in Excel ein Diagramm erstellen kann dass mir die Aufladung in einem Diagramm zeigt.
ist Deine 'Komma'-Taste kaputt??
Muss man ja mindestens dreimal lesen, den Satz .... :(

Gruß Klaus
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
sserio printf integer formatting Java Basics - Anfänger-Themen 17
M Java printf(Locale.... funktioniert nicht Java Basics - Anfänger-Themen 3
N Methoden printf Methode Problem Java Basics - Anfänger-Themen 2
O printf und (int) Java Basics - Anfänger-Themen 6
C system.out.printf mit streams benutzen Java Basics - Anfänger-Themen 7
F Formatiere Ausgabe mit printf Java Basics - Anfänger-Themen 7
G System.out.printf geht nicht Java Basics - Anfänger-Themen 6
R The method printf(String, Object[]) in the type printStrem in not applicable for the arguments ... Java Basics - Anfänger-Themen 3
B Printf führt zu Error. Java Basics - Anfänger-Themen 8
C Printf nutzen Java Basics - Anfänger-Themen 10
C Printf nutzen Java Basics - Anfänger-Themen 6
M Erste Schritte Formatierte Ausgabe mit printf() Java Basics - Anfänger-Themen 24
H printf: Unterschied %f und %g Java Basics - Anfänger-Themen 5
R printf Java Basics - Anfänger-Themen 5
T System.out.printf Zeilenumbruch nach x Stellen Java Basics - Anfänger-Themen 4
N Ausgabe Problem System.console().printf() Java Basics - Anfänger-Themen 6
T System.out.printf Java Basics - Anfänger-Themen 4
J Runden mit printf Java Basics - Anfänger-Themen 3
J System.out.printf in eine Datei umleiten ? Java Basics - Anfänger-Themen 4
R Zahlen bei printf auf 2 Nachkommestellen begrenzen Java Basics - Anfänger-Themen 10
B printf() mit Parameterübergabe? Java Basics - Anfänger-Themen 2
G printf Funktion aus C schreiben Java Basics - Anfänger-Themen 7
N formatierung aus printf in string verwenden Java Basics - Anfänger-Themen 3
J Eclipse und printf und import util.java.scanner; Java Basics - Anfänger-Themen 4
J printf: Fehlermeldung in Eclipse Java Basics - Anfänger-Themen 4
H printf und Zahlen Java Basics - Anfänger-Themen 2
K System.out.printf(); funktioniert bei eclipse nicht Java Basics - Anfänger-Themen 2
T JNI Absturz - printf Java Basics - Anfänger-Themen 7
S Problem mit printf Java Basics - Anfänger-Themen 3
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
W Daten in Echtzeit übernehmen Java Basics - Anfänger-Themen 5
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
I H2 Datenbank starten / Daten in File speichern Java Basics - Anfänger-Themen 25
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
E fehlermeldung bei richtigen login daten Java Basics - Anfänger-Themen 7
C Java Funktion: externe Daten vom Internet einbinden Java Basics - Anfänger-Themen 2
P Schiebefix - ArrayList überschreibt Daten Java Basics - Anfänger-Themen 3
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
E Wie gebe ich alle Daten zwischen zwei Zeitpunkten aus? Java Basics - Anfänger-Themen 2
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
M Tabellen- Daten laden Java Basics - Anfänger-Themen 2
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A Literale für primitive Daten Typen Java Basics - Anfänger-Themen 4
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
D Sportwetten Daten Atomatisch analysieren um optimale Strategie zu erhalten Java Basics - Anfänger-Themen 6
S Java Daten in Excel speichern Java Basics - Anfänger-Themen 1
S Daten speichern, ohne Datenbank Java Basics - Anfänger-Themen 8
L Daten aus ArrayList in Datenbank durchsuchen Java Basics - Anfänger-Themen 5
Shallty Daten speichern und ändern? Java Basics - Anfänger-Themen 32
M Sqlite table löschen und daten einfügen Java Basics - Anfänger-Themen 5
S Binäre-Suche bei unsortierten Daten Java Basics - Anfänger-Themen 7
N Was passiert wenn wir Daten auf der Festplatte abspeichern wollen? bzgl. BufferStreams Java Basics - Anfänger-Themen 9
T Daten von Objekten speichern Java Basics - Anfänger-Themen 7
A Minesweeper - Daten Java Basics - Anfänger-Themen 46
A Eingelesene Daten in Array(Liste) abspeichern? Java Basics - Anfänger-Themen 18
S Daten aus zwei Verschiedenen Tabellen in eine ArrayListe Java Basics - Anfänger-Themen 4
WPS1000 Input/Output Wie aktiviere ich den Daten Transfer von der RS232 in meine Java Applikation Java Basics - Anfänger-Themen 2
R Eigenes Protokoll zur Übermittlung von Daten zum Webserver? Java Basics - Anfänger-Themen 4
A Reader wohin werden Daten gespeichert? Java Basics - Anfänger-Themen 7
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
S Daten aus eigenständiger .class-Datei abrufen Java Basics - Anfänger-Themen 1
E Daten dem Super Aufruf übergeben Java Basics - Anfänger-Themen 3
M jTabel mit Daten Füllen Java Basics - Anfänger-Themen 5
M Wie erzeuge ich die Differenz von zwei Daten in Stunden?? Java Basics - Anfänger-Themen 2
S Daten lesen und speichern Java Basics - Anfänger-Themen 26
S JTable mit Daten füllen Java Basics - Anfänger-Themen 7
L Java Programm zum Auswerten von Daten Java Basics - Anfänger-Themen 11
H Passwortmanager, Sicherheit der Daten Java Basics - Anfänger-Themen 12
G Best Practice Wie große "Tabellen" effizient durchsuchen und Daten händeln? Java Basics - Anfänger-Themen 15
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
M Best Practice Daten-Import /Trabsfomration aus Textdatei Java Basics - Anfänger-Themen 12
R JTable Suchfunktion mit SQL Daten Java Basics - Anfänger-Themen 2
E Daten gehen nicht in Datenbank Java Basics - Anfänger-Themen 14
M Erste Schritte Speichern von mehreren Daten Java Basics - Anfänger-Themen 3
J Daten einer Textdatei in ein JTable importieren. Java Basics - Anfänger-Themen 3
F Daten von Thread an den aufrufenden zurückgeben Java Basics - Anfänger-Themen 22
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
N Erste Schritte Dedicated Server \ Senden und Empfangen von Daten/Befehlen Java Basics - Anfänger-Themen 2
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
D NPE beim laden von Daten aus MySQL Java Basics - Anfänger-Themen 9
P Einlesen von Daten via BufferedReader Java Basics - Anfänger-Themen 4
P Methoden ausgelesene (CSV-) Daten in Liste einer anderen Klasse einlesen Java Basics - Anfänger-Themen 0
F Daten aus Excel-Tabelle in Java importieren Java Basics - Anfänger-Themen 15
F Http Post von mehreren Daten Java Basics - Anfänger-Themen 5
F Daten auf Webserver laden - wiederholen bei Fehler Java Basics - Anfänger-Themen 0
W Best Practice problemabhängige Persistentmachung von Daten Java Basics - Anfänger-Themen 6
P Daten von Internetseite auslesen Java Basics - Anfänger-Themen 10
N Daten/Formular per POST an Firefox/Browser senden Java Basics - Anfänger-Themen 7
D Daten mit Apache POI in eine Excel Datei schreiben Java Basics - Anfänger-Themen 5
T JTable Daten aus txt datei Java Basics - Anfänger-Themen 3
P zweidimensionales Array anlegen und mit DB-Daten füllen Java Basics - Anfänger-Themen 14
V Einlesen von Daten Java Basics - Anfänger-Themen 8
J TableView zeigt keine Daten an Java Basics - Anfänger-Themen 14
J Daten im Programm speichern Java Basics - Anfänger-Themen 14
N Interface Daten einem Implementierten Interface zuweisen Java Basics - Anfänger-Themen 37

Ähnliche Java Themen

Neue Themen


Oben