# Probleme mit den Arrays



## susi88 (13. Apr 2012)

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.

```
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 (13. Apr 2012)

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.


----------



## Final_Striker (13. Apr 2012)

susi88 hat gesagt.:


> kann mir da jemand helfen?



Hast du auch eine konkrete Frage?

Ansonsten wäre Schleifen sicherlich ein gutes Stichwort, wenn es um Arrays geht.


----------



## susi88 (13. Apr 2012)

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:



```
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 (13. Apr 2012)

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


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


----------



## darekkay (13. Apr 2012)

susi88 hat gesagt.:


> die methoden die ich brauch sind mir klar


Das scheint wirklich nicht der Fall zu sein. 
Jetzt mal vom Java-Code ganz abgesehen: wie sieht die Formel aus, um für ein Paar (startTemp, endTemp) die Wärmeenergie zu berechnen?


----------



## turtle (13. Apr 2012)

Meinst Du so etwas?


```
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 (13. Apr 2012)

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.


----------



## susi88 (13. Apr 2012)

```
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


----------



## Gast2 (13. Apr 2012)

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 (13. Apr 2012)

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?


```
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;
	}

}
```


----------



## Gast2 (13. Apr 2012)

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





```
Arrays.toString
```
 verwenden.


----------



## susi88 (13. Apr 2012)

du meinst so:

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


```
outPut(tStart, tEnde);
```


----------



## Gast2 (13. Apr 2012)

Schauts denn so aus wie du das haben willst?

Ich meine diese Methode:
Arrays (Java Platform SE 6)[])


----------



## susi88 (13. Apr 2012)

er spuckt mir an stelle der werte nur iwas aus,
sonst würds passen, 
obwohl er leider auch nur ein wertePaar anstatt 7 auswirft.


----------



## Paddelpirat (13. Apr 2012)

Versuchs mal so:


```
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.");
        }
}
```


----------

