Probleme mit den Arrays

susi88

Mitglied
hallo,
meine Aufgabe besteht darin die wärmeenergie zu berechnen,
an sich kein problem, die methoden die ich brauch sind mir klar,
mein problem ist das ich nicht nur von einem wertepaar( Temperatur zu beginn und Temperatur am Ende) die energie berechnen soll, sondern von 7 wertepaaren.
Java:
public class WaermeEnergieB {
	
	private final static double V = 15.;	  //Volumen in Liter
	private final static double ROH = 1000.;  //Dichte	
	private final static double DHV = 2256.;  //Kondensationswaerme
	private final static double DHSM = 334.;  //Schmelzwaerme
	private final static double C1 = 2.;  
	private final static double C2 = 4.2;  
	
	
	public static void main (String args[]) {
		double[] tStart = new double [7];   //Array fuer die Start Temperaturen
		
		tStart[0] = -15.6;
		tStart[1] = -15.6;
		tStart[2] = -15.6;
		tStart[3] = -15.6;
		tStart[4] = 16.7;
		tStart[5] = 16.7;
		tStart[6] = 112.7;
		
		double [] tEnde = new double [7];   //Array fuer die End Temperaturen
		
		tEnde[0] = -5.1;
		tEnde[1] = 32.4;
		tEnde[2] = 122.5;
		tEnde[3] = 32.4;
		tEnde[4] = 32.4;
		tEnde[5] = 132.5;
		tEnde[6] = 133.4;
		
		double dT0 = tStart[0] -tEnde[0];
		double dT1 = tStart[1] -tEnde[1];
		double dT2 = tStart[2] -tEnde[2];
		double dT3 = tStart[3] -tEnde[3];
		double dT4 = tStart[4] -tEnde[4];
		double dT5 = tStart[5] -tEnde[5];
		double dT6 = tStart[6] -tEnde[6];
			
	}
	
	public static double [] waermeEnergie1() { // Berechnung Q1
		int x = 0;
		
		while (x < 7) {
			 
			if( dT >= 100 ) { 
				
				double q1 = ( V * C1 * dT);
				
			}
			else ( dT < 100 ) {
				double q1 = ( V * C2 * dT);
				
			}
			x = x+1;
		}
	}
	public static double waermeEnergie2() {
		int x = 0;
		while(x < 7) {
			
			if(tStart <0 && TEnde <0) {
				double q2 = 0;
				
			}else{
				double q2 = (V*DHSM);
			}
			x = x+1;
		}
	}
	public static double waermeEnergie3 () {
		int x = 0;
		while(x < 7) {
			
			if(tStart >100) {
				
			}
			x = x+1;
		}
	}
	public static double gesamteWaermeEnergie(q1,q2,q3) {
		int x = 0;
		while(x < 7) {
			q = q1 + q2 + q3;
			x = x+1;
		}
		
	}

}

kann mir da jemand helfen?
danke schon mal,
lg Susi
 

darekkay

Bekanntes Mitglied
Wo genau kommst du jetzt nicht weiter?

Du musst eine Methode berechneEnergie(double start, double end) haben, die die zwei Werte entgegennimmmt und das Ergebnis für EIN Paar liefert. In einer Schleife (am Besten in einer weiteren Methode) rufst du diese Methode für alle Paare auf. Dazu ein Tipp: anstatt zwei Double-Arrays zu verwenden, solltest du ein Point-Array nehmen. Dadurch ersparst du dir viel Arbeit und der Code wird wesentlich lesbarer. Die o.g. Methode könnte man dann gleich als berechneEnergie(Point wertePaar) definieren.
 

susi88

Mitglied
konkrete Fragen, ok, wo fang ich da bloß an!^^

ich muss ja die werte weiter unten berechnen, wie beleg ich da neue arrays mit den berechneten werten?
ich bin leider noch sehr holprig unterwegs mit java und hab nicht wirklich einen plan wie ich da zu ergebnissen komm!:noe:


Java:
public class WaermeEnergieB {
	
	private final static double V = 15.;	  //Volumen in Liter
	private final static double ROH = 1000.;  //Dichte	
	private final static double DHV = 2256.;  //Kondensationswaerme
	private final static double DHSM = 334.;  //Schmelzwaerme
	private final static double C1 = 2.;  
	private final static double C2 = 4.2;  
	
	
	public static void main (String args[]) {
		double[] tStart = new double [7];   //Array fuer die Start Temperaturen
		
		tStart[0] = -15.6;
		tStart[1] = -15.6;
		tStart[2] = -15.6;
		tStart[3] = -15.6;
		tStart[4] = 16.7;
		tStart[5] = 16.7;
		tStart[6] = 112.7;
		
		double [] tEnde = new double [7];   //Array fuer die End Temperaturen
		
		tEnde[0] = -5.1;
		tEnde[1] = 32.4;
		tEnde[2] = 122.5;
		tEnde[3] = 32.4;
		tEnde[4] = 32.4;
		tEnde[5] = 132.5;
		tEnde[6] = 133.4;
	}
	// Berechnung der Tempertur-Unterschiede, Ausgabe als wertePaar
	public static double[] berechneTempDifferenz(double tStart, double tEnde){ 
		
	}
	
	public static double[] waermeEnergie1() { // Berechnung Q1
		int x = 0;
		double [] q1 = new double[7];
		while (x < 7) { 
			if(tStart > 0 && tStart < 100 ) { 
				
				double q1 = ( V * C2 * dT);
			}
			else{
				double q1 = ( V * C1 * dT);	
			}
			x = x+1;
		}
		return arrayq1;
	}
	
	public static double[] waermeEnergie2() {
		int x = 0;
		double [] q2 = new double[7];
		while(x < 7) {
			
			if(tStart <0 && TEnde <100) {
				double q2 = (V*DHSM);
				
			}else{
				double q2 = 0;
			}
			x = x+1;
		}
		return arrayq2;
	}
	
	public static double[] waermeEnergie3 () {
		int x = 0;
		double [] q3 = new double[7];
		while(x < 7) {
			if(tStart > 0 && tStart <100) {
				q3 = V * DHV;	
			}else {
				q3 = 0;
			}
			x = x+1;
		}
		return arrayq3;
	}
	
	public static double[] gesamteWaermeEnergie(q1,q2,q3) {
		int x = 0;
		double [] q = new double[7];
		while(x < 7) {
			q = q1 + q2 + q3;
			x = x+1;
		}
		return new array;	
	}
	public static double[] outPut(){
		System.out.println("Um " + V + " Eis von" + tStart + "°C zu erwaermen, ");
		System.out.println("muss " + q + "kJ Energie zugefuehrt werden.");
	}

}
 

susi88

Mitglied
etwas konkreter jetzt,
hab das so verstanden das ich die wertePaare so binden soll,
hab aber das Problem das er bei den Formaten nörgelt,
weil ich die tStart und tEnde variablen als double übergeb,
jetzt weiß ich nicht mehr weiter

Java:
public static double[] berechneTempDifferenz(double tStart, double tEnde){ 
		double[] dt = new double [7];
		dt = tStart - tEnde;
	}
 

turtle

Top Contributor
Meinst Du so etwas?

Java:
	public static double[] berechneTempDifferenz(double[] tStart, double[] tEnde){ 
        double[] dt = new double [Math.max(tStart.length, tEnde.length)];
        int index = 0;
        for (double dStart : tStart) {
        	for (double dEnde : tEnde) {
        		double diff = dStart - dEnde;
        		dt[index++]= diff;
			}			
		}
        return dt;
    }
 

susi88

Mitglied
ich weiß ich hab nicht viel ahnung, deshalb bitte ich ja um hilfe.
ich meinte mit dem was ich weiß,
die if- verzweigungen, und wie ich die anderen formeln berechnen muss.


ja genau,
dankeschön.
 
Zuletzt bearbeitet:

susi88

Mitglied
Java:
public static double[] waermeEnergie1(double[] tStart, double [] dt ) { // Berechnung Q1
		int idx = 0;
		double [] q1 = new double[tStart.length];
		while (idx < 7) { 
			for (double dStart : tStart){
				for (double ddt : dt){
					if(dStart > 0 && dStart < 100 ) { 
						
						double mq1 = ( V * C2 * ddt);
					}
					else{
						double mq1 = ( V * C1 * ddt);	
					}
					q1 [idx++] = mq1; //Fehler :mq1 cannot be resolved to a variable
				}
			}		
		}
		return q1;
	}

wieso kann er denn das jetzt nicht übernehmen?
bei der berechnung vorher hats geklappt!
steh ich da am schlauch und überseh was?
lg
 
G

Gast2

Gast
Eine Variable ist nur in dem Block gültig in dem die deklariert wurde. Du hast die Variable im if bzw. else block deklariert, daher ist die außerhalb nicht sichtbar.
 

susi88

Mitglied
so ich nerv euch jetzt hoffentlich das letzte mal,
also soweit müsst alles passen, nur bei der ausgabe gibts probleme.
ich muss die Ausgabe doch in der main-Methode aufrufen oder?
und wenn ich das mach, schreibt er mir den wert nur einmal, und den falschen hin!?
woran kann das liegen?

Java:
public class WaermeEnergieB {
	
	private final static double V = 15.;	  //Volumen in Liter
	private final static double ROH = 1000.;  //Dichte	
	private final static double DHV = 2256.;  //Kondensationswaerme
	private final static double DHSM = 334.;  //Schmelzwaerme
	private final static double C1 = 2.;  
	private final static double C2 = 4.2;  
	
	
	public static void main (String args[]) {
		
		double[] tStart = new double [7];   //Array fuer die Start Temperaturen
		
		tStart[0] = -15.6;
		tStart[1] = -15.6;
		tStart[2] = -15.6;
		tStart[3] = -15.6;
		tStart[4] = 16.7;
		tStart[5] = 16.7;
		tStart[6] = 112.7;
		
		double [] tEnde = new double [7];   //Array fuer die End Temperaturen
		
		tEnde[0] = -5.1;
		tEnde[1] = 32.4;
		tEnde[2] = 122.5;
		tEnde[3] = 32.4;
		tEnde[4] = 32.4;
		tEnde[5] = 132.5;
		tEnde[6] = 133.4;
	}
	// Berechnung der Tempertur-Unterschiede, Ausgabe als wertePaar
	public static double[] berechneTempDifferenz(double[] tStart, double[] tEnde){ 
		double[] dt = new double [Math.max(tStart.length,tEnde.length)];
		int idx = 0;
		for (double dStart : tStart){
			for (double dEnde : tEnde){
				double diff = dStart - dEnde;
				dt [idx++] = diff;
			}
		}
		return dt;
	}
	
	public static double[] waermeEnergie1(double[] tStart, double [] dt ) { // Berechnung Q1
		int idx = 0;
		double [] q1 = new double[tStart.length];
		while (idx < 7) { 
			for (double dStart : tStart){
				for (double ddt : dt){
					if(dStart > 0 && dStart < 100 ) { 
						
						double mq1 = ( ROH * V * C2 * ddt);
						q1 [idx++] = mq1;
					}
					else{
						double mq1 = (ROH * V * C1 * ddt);	
						q1 [idx++] = mq1;
					}
				}
			}		
		}
		return q1;
	}
	
	public static double[] waermeEnergie2(double[] tStart, double[] tEnde) {
		int idx = 0;
		double [] q2 = new double[Math.max(tStart.length,tEnde.length)];
		while(idx < 7) {
			for (double dStart : tStart){
				for (double dEnde : tEnde){
					if(dStart <0 && dEnde <100) {
						double mq2 = (ROH *V*DHSM);
						q2 [idx++] = mq2;
					}else{
						double mq2 = 0;
						q2 [idx++] = mq2;
					}
				}		
			}	
		}
		return q2;
	}
	
	public static double[] waermeEnergie3 (double[] tStart) {
		int idx = 0;
		double [] q3 = new double[tStart.length];
		while(idx < 7) {
			for (double dStart : tStart){
				if(dStart > 0 && dStart <100) {
					double mq3 = (ROH *V * DHV);	
					q3 [idx++] = mq3;
				}else {
					double mq3 = 0;
					q3 [idx++] = mq3;
				}
			}
		}
		return q3;
	}
	
	public static double[] gesamteWaermeEnergie(double[] q1,double[] q2,double[] q3) {
		int idx = 0;
		double [] q = new double[q1.length];
		while(idx < 7) {
			for (double dq1 : q1){
				for (double dq2 : q2){
					for (double dq3 : q3){
						double mq = dq1+dq2+dq3;
						q [idx++] = mq;
					}
				}
			}
		}
		return q;	
	}
	public static double[] outPut(double[] tStart,double[] q){
		System.out.println("Um " + V + "kg Eis von " + tStart + "°C zu erwaermen, ");
		System.out.println("muss " + q + " kJ Energie zugefuehrt werden.");
		return q;
	}

}
 
G

Gast2

Gast
Du versuchst da Objekte auszugeben, Arrays haben aber keine schöne toString() Methode. Du kannst aber
Code:
Arrays.toString
verwenden.
 

susi88

Mitglied
du meinst so:
Java:
public static double[] outPut(double[] tStart,double[] q){
		System.out.println("Um " + V + "kg Eis von " + tStart.toString() + "°C zu erwaermen, ");
		System.out.println("muss " + q.toString() + " kJ Energie zugefuehrt werden.");
		return q;
	}

und in der main:

Java:
outPut(tStart, tEnde);
 

Paddelpirat

Bekanntes Mitglied
Versuchs mal so:

Java:
public static void outPut(double[] tStart,double[] q) {
        for(int i=0; i<tStart.length; i++) {
                System.out.println("Um " + V + "kg Eis von " + tStart[i] + "°C zu erwaermen, ");
                System.out.println("muss " + q[i] + " kJ Energie zugefuehrt werden.");
        }
}
 

Neue Themen


Oben