Hallo Javaforum!
Ich habe folgendes Problem, es soll ein Programm entstehen, welches u-Werte und q-Werte der Wände berechnet. Die Innen- und Außentemperatur muss vom Nutzer eingegeben und die Dicke und Lambda der Wände müssen aus einer Excell-Datei eingelesen werden. Das eigentliche Problem besteht für mich darin, dieses "Einlesen" in das Programm zu integrieren, sodass Java dann damit arbeiten kann. Was mache ich falsch und wie kann ich es richtig machen. Ich habe das Gefühl ich bin sehr nah dran aber ich verstehe es einfach nicht.
Hauptprogramm:
Nebenprogramm Wandschicht:
Nebenprogramm Wand:
Ich habe folgendes Problem, es soll ein Programm entstehen, welches u-Werte und q-Werte der Wände berechnet. Die Innen- und Außentemperatur muss vom Nutzer eingegeben und die Dicke und Lambda der Wände müssen aus einer Excell-Datei eingelesen werden. Das eigentliche Problem besteht für mich darin, dieses "Einlesen" in das Programm zu integrieren, sodass Java dann damit arbeiten kann. Was mache ich falsch und wie kann ich es richtig machen. Ich habe das Gefühl ich bin sehr nah dran aber ich verstehe es einfach nicht.
Hauptprogramm:
Java:
package programm;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Wearmestrom {
// Scanner importiert
public static void main (String args[]){
Scanner sc = new Scanner(System.in);
//Informieren des Nutzers über den Anforderungsbereich
System.out.println ("Mit Hilfe dieses Programmes können Sie die U-Werte und q-Werte Ihrer Wände berechnen.");
System.out.println("");
// Objekt vom Typ Wand
Wand w= new Wand();
// While-Schleife beginnt
while (true){
//Einlesen der Dicke der Wandschicht und der Lambdawerte und Zuweisung an Wandschicht
//in jedem Durchlauf wird ein Objekt vom Typ Wandschicht erzeugt
Wandschicht ws;
ws = new Wandschicht();
File file = new File("./src/wand1.csv");
String line;
try {
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
// so lange lesen, wie Zeilen in der Datei vohanden sind
while ((line = bufferedReader.readLine()) != null ){
//die string token geschichte passiert innerhalb der while schleife
StringTokenizer stringTokenizer = new StringTokenizer(line, ";");
String token1 = stringTokenizer.nextToken ();
String token2 = stringTokenizer.nextToken();
double x = Double.parseDouble(token1);
double y = Double.parseDouble(token2);
ws.dicke = Double.parseDouble(token1);
// Schleife wird so lange wiederholt, bis negative Zahl für Dicke eingegeben wird
if (ws.dicke<0 )break;
ws.lambda = Double.parseDouble(token2);
// Datenstrom schließen
bufferedReader.close(); }
// Übergabe des Objektes an Wand-Objekt
w.addSchicht(ws);
// Ende der while-Schleife
} catch (IOException e) { e.printStackTrace();}{
}
// Innen- und Außentemperaturen werden mittels Scanner-Objekt eingelesen
// Übergabe der Werte an das Wand-Objekt
System.out.println("Geben Sie Außentemperatur ein! ");
w.setAussenTemp(sc.nextDouble());
System.out.println("Geben Sie Innentemperatur ein! ");
w.setInnenTemp(sc.nextDouble());
// toString()-Methode des Wand-Objektes um Zeichenkette auszugeben
System.out.println(w.toString());
}
}
}
Nebenprogramm Wandschicht:
Java:
package programm;
//Nebenprogramm Wandschicht
public class Wandschicht {
// Attribute Lambda und Dicke
double lambda;
double dicke;
Wandschicht(){
}
}
Nebenprogramm Wand:
Java:
package programm;
import java.util.ArrayList;
public class Wand{
//Sichtbarkeitskriterien und Datentypen zuweisen / Attribute
//Liste für Datentyp Wandschicht
private ArrayList<Wandschicht> m_schichten;
//Außen- und Innentemp. mit Datentyp double
private double m_temp_aussen;
private double m_temp_innen;
// zuweisung für Zwischenrechnungen und U und q Werte
private String zR1;
private String zR2;
private double u_Wert;
private double q_Wert;
public Wand(){
m_schichten = new ArrayList<Wandschicht>();
zR1 = "";
zR2 = "";
u_Wert = 0;
q_Wert = 0;
}
// diese Methode trägt übergebene Wandschicht in die Liste ein
void addSchicht(Wandschicht s){
m_schichten.add(s);
}
// get und set Methoden für die Attribute
double getAussenTemp(){
return m_temp_aussen;
}
void setAussenTemp(double abc){
m_temp_aussen = abc;
}
double getInnenTemp(){
return m_temp_innen;
}
void setInnenTemp(double abc){
m_temp_innen = abc;
}
// diese Methode berechnet den U-Wert aller Wandschichten und gibt ihn zurück
double getU(){
for(int i=0; i<m_schichten.size(); i++){
u_Wert = u_Wert + 1/(m_schichten.get(i).dicke / m_schichten.get(i).lambda);
zR1 = zR1 + "Nach Schicht "+i+" beträgt der U-Wert: "+u_Wert + " W/Km².\n";
}
return u_Wert;
}
double getQ(){
for(int i=0; i<m_schichten.size(); i++){
q_Wert = q_Wert + u_Wert * (m_temp_innen - m_temp_aussen);
zR2 = zR2 + "Nach Schicht " +i+ " beträgt der q-Wert: " +q_Wert+ " W/m².\n";
}
return q_Wert;
}
//diese Methode gibt eine Zeichenkette mit allen wichtigen Informationen der Wand zurück
// Wert U und Q, alle Temperaturen der Wandschichten
public String toString(){
String zR = "";
zR = zR + "Die Außentemperatur betraegt: " + getAussenTemp()+ " C° .\n";
zR = zR + "Die Innentemperatur betraegt: " + getInnenTemp()+ " C° .\n";
System.out.println("");
zR = zR + "Berechnung des U-Wertes: " + getU()+ " W/Km².\n";
zR = zR + "Zwischenrechnung 1: \n " + zR1 + " \n";
System.out.println("");
zR = zR + "Berechnung des q-Wertes: " + getQ()+ " W/m².\n";
zR = zR + "Zwischenrechnung 2: \n " + zR2 + " \n";
return zR;
}
}