# Polynom berechnen



## Bison (15. Dez 2010)

Hallo, ich habe hier eine Aufgabe, in der zunächst mit einer statischen Methode einnat() den Polynomgrad n eines Polynoms p(x) einlesen soll und daraufhin mit der Methode einPoly() das Koeffizientenfeld a[] des Polynoms einlesen soll. Das Einlesen des Polynomgrades hab ich hinbekommen, bei dem Feld habe ich ein paar Probleme. Hab hier nur mal das Programm für das Koeffizientenfeld eingefügt:


[JAVA=42]class PolyM
{
 public static void main(String [] args)
 {

  double t;
  t= einPoly(int n);
 }
 static double[] einPoly(int n)
 {
  double a[];
  int i;

  a = new double[n+1];
  for ( i = 0; i < a.length; i++)
  {
   System.out.println("Bitte Koeffizienten angeben:");
   a_=IO1.eindouble();


  }
 }
}[/code]

bekommen folgende Fehlermeldung:

PolyM.java:11:6: einPoly(int) in PolyM cannot be applied to ()
t=einPoly();
^
PolyM.java:24:11: incompatible types
found : int
required: double[]
return n;
^
2 errors_


----------



## Bison (15. Dez 2010)

sorry ich konnte den Beitrag oben nicht editieren, hatte einen kleinen Fehler im oberen Programm, hier nochmal:


```
class PolyM
{
 public static void main(String [] args)
 {
  double t;
  t=einPoly();
 }
 static double[] einPoly(int n)
 {
  double a[];
  int i;

  a = new double[n+1];
  for ( i = 0; i < a.length; i++)
  {
   System.out.println("Bitte Koeffizienten angeben:");
   a[i]=IO1.eindouble();
   
   return n;
  }
 }
}
```


----------



## Haave (15. Dez 2010)

Die Methode einPoly() muss ein double-Array zurückgeben, so steht es in der Methodensignatur (static *double[]* einPoly(int n)), du versuchst aber, n zurückzugeben, das ein int ist.


----------



## Bison (15. Dez 2010)

n ist ein int, aber daran kann ich nichts ändern, der Prototyp "static double[] einPoly(int n)" muss so bleiben. Oder wie meintest du das?


----------



## Final_Striker (15. Dez 2010)

Die Methode muss ein [c]double[][/c] zurückgeben, bei dir gibt sie aber ein [c]int[/c] zurück.


----------



## XHelp (15. Dez 2010)

Da ist viel mehr verkehrt, als nur dir Rückgabe

```
class PolyM
{
 public static void main(String [] args)
 {
  double t; //ist es jetzt doch ein double?
  t=einPoly(); // fehlt hier nicht ein Parameter???
 }
 static double[] einPoly(int n)
 {
  double a[];
  int i;
  a = new double[n+1];
  for ( i = 0; i < a.length; i++)
  {
   System.out.println("Bitte Koeffizienten angeben:");
   a[i]=IO1.eindouble();
   return n; //im ersten Schritt etwas zurückgeben macht die Schleife sinnlos
   //... und außerdem macht es ja kein Sinn irgendeine Berechnung durchzuführen und dann eifnach n auszugebe
  }
 }
}
```

Im Grund versuchst du in ein Double, die erwartete Array-Rückgabe einer Methode zu speichern, die eigentlich doch nur ein int zurück liefert...


----------



## Bison (15. Dez 2010)

[JAVA=42]int t; 
t=einPoly(); //Welcher Parameter? ich blick da nicht durch[/code]


----------



## XHelp (15. Dez 2010)

Bison hat gesagt.:


> Welcher Parameter? ich blick da nicht durch




```
static double[] einPoly----->(int n)<-----
```
... vermutlich eine Zahl...

Und int ist auch falsch. Du lieferst ein *double-array* zurück. Also was brauchst du für ein Typ um ein *double-array* zu speichern?


----------



## Bison (15. Dez 2010)

ich nehme an double[]


----------



## XHelp (15. Dez 2010)

Ja. Und auch das gleiche solltest du auch in der Methode zurückliefern


----------



## Bison (15. Dez 2010)

ok ich hab's jetzt in einer Zeile so zusammengefasst:

[JAVA=42]double[] t=einPoly(0);[/code]

läuft. Danke fürs Helfen.


----------



## Bison (15. Dez 2010)

jetzt habe ich noch ein Problem, meine Methoden in Abhängnikkeit voneinander zu bringen. Ich will mit der ersten statischen Methode einnat() den Polynomgrad n einlesen, und mit einPoly() die Koeffizienten einlesen. Die Anzahl der einzulesenden Koeffizienten soll n+1 sein, n hab ich ja vorhin eingegeben. Also wenn ich 5 eingebe am Anfang bei einnat(), soll er 6 mal nach einer Eingabe fragen bei einPoly(). Leider fragt er nur nach einem Koeffizienten. Was hab ich falsch gemacht?


```
class PolyM
{
 public static void main(String [] args)
 { double s;
   s= einnat();
   double[] t=einPoly(0);

  }
 static int einnat()
 {int n;
  System.out.println("Bitte Polynomgrad n eingeben");
  n=IO1.einint();

  return n;
 }


static double[] einPoly(int n)
 {
  double a[];
  int i;

  a = new double[n+1];
  for ( i = 0; i < a.length; i++)
  {
   System.out.println("Bitte Koeffizienten angeben:");
   a[i]=IO1.eindouble();
  }  return a;
 }
}
```


----------



## XHelp (15. Dez 2010)

Du schmeißt immer noch wild mit Typen um sich rum. einnat liefert dir ein int, warum speicherst du es in ein double?
Und einPoly erwartet ja ein Parameter. Da kannst du ja das, was du eingelesen hast auch übergeben


----------



## Bison (15. Dez 2010)

achso, hab's jetzt danke.

[JAVA=42]int s;
   s= einnat();
   double[] t=einPoly(s);[/code]


----------

