# Zwei Variablen zurückgeben ?



## 0001001 (2. Dez 2005)

Hallo,

hab hier ein kleines Programm, dass die quadratische Gleichung ax² + bx + c = 0 löst.

```
public double berechnen(double a1, double b1, double c1) {
		double x1 = 0;
		double x2 = 0;
	    x1 = Math.pow(b1, 2) - (4 * a1 * c1);
		x1 = Math.sqrt(x1);
		x1 = -b1 + x1;
		x1 = x1 /(2 * a1);
		
		x2 = Math.pow(b1, 2) - (4 * a1 * c1);
		x2 = Math.sqrt(x2);
		x2 = -b1 - x2;
		x2 = x2 /(2 * a1);		
		return (x1);
```

Jedoch kann ich bei return immer nur eine Variable als Rückgabewert angeben. Wie schaffe ich es dass er return(x1, x2) aktzeptiert?


----------



## Sky (2. Dez 2005)

z.B. ein double[]


----------



## 0001001 (2. Dez 2005)

sorry das verstehe ich nicht. Wo soll das double[] hin ?


----------



## Sky (2. Dez 2005)

```
public double[] berechnen(double a1, double b1, double c1) {
```

an Stelle 0 steht z.B. x1 und an Stelle 1 steht x2


----------



## 0001001 (2. Dez 2005)

so? 

```
public double[] berechnen(double a1, double b1, double c1) {
		double x1 = 0;
		double x2 = 0;
	    x1 = Math.pow(b1, 2) - (4 * a1 * c1);
		x1 = Math.sqrt(x1);
		x1 = -b1 + x1;
		x1 = x1 /(2 * a1);
		
		x2 = Math.pow(b1, 2) - (4 * a1 * c1);
		x2 = Math.sqrt(x2);
		x2 = -b1 - x2;
		x2 = x2 /(2 * a1);		
		return (x1, x2);
		
	}
```

weil das geht nicht.


----------



## Sky (2. Dez 2005)

```
public double[] berechnen(double a1, double b1, double c1) {
      double x1 = 0;
      double x2 = 0;
       x1 = Math.pow(b1, 2) - (4 * a1 * c1);
      x1 = Math.sqrt(x1);
      x1 = -b1 + x1;
      x1 = x1 /(2 * a1);
      
      x2 = Math.pow(b1, 2) - (4 * a1 * c1);
      x2 = Math.sqrt(x2);
      x2 = -b1 - x2;
      x2 = x2 /(2 * a1);      
 
double[] test = new double[2];
test[0] = x1;
test[1] = x2;
return test; 
}
```


----------



## foobar (2. Dez 2005)

```
public static double[] berechnen(double a1, double b1, double c1) {
      double x1 = 0;
      double x2 = 0;
       x1 = Math.pow(b1, 2) - (4 * a1 * c1);
      x1 = Math.sqrt(x1);
      x1 = -b1 + x1;
      x1 = x1 /(2 * a1);
      
      x2 = Math.pow(b1, 2) - (4 * a1 * c1);
      x2 = Math.sqrt(x2);
      x2 = -b1 - x2;
      x2 = x2 /(2 * a1);      
      return new double[]{x1, x2};
   }
```


```
double[] out =  berechnen();
System.out.println(">>" +out[0] + " >>" + out[1]);
```


----------



## 0001001 (2. Dez 2005)

dankeschön!

die Lösung von Sky funktioniert einwandfrei,
bei der von foobar meckert der compiler noch an der stelle: 
return new double[]{x1, x2};


----------



## Murray (2. Dez 2005)

> bei der von foobar meckert der compiler noch an der stelle:
> return new double[]{x1, x2};



Was "meckert" der Compiler denn da? So falsch sieht das eigentlich nicht aus...


----------



## foobar (3. Dez 2005)

Murray hat gesagt.:
			
		

> > bei der von foobar meckert der compiler noch an der stelle:
> > return new double[]{x1, x2};
> 
> 
> ...



Würde mich auch mal interessieren  :shock:


----------

