# Variable Parameter in Konstruktor



## xfeldt (27. Aug 2011)

Hallo,

ich versuche mir gerade selbst Java beizubringen und habe im Zuge dessen ein Programm geschrieben, dass vom User die Koeffizienten, den Grad und die zu untersuchende Stelle von einem beliebigen Polynom erfragt. Das versuche ich mit variablen Parametern zu realisieren. Das Programm funktioniert auch recht gut bis auf die Tatsache, dass ich keine Ahnung habe wie ich der Methode 
	
	
	
	





```
funktion(double x, double... args)
```
 die erfragten *variablen * Parameter gebe. Habe schon überlegt, ob man einen String erstellen kann und mit diesem String die Parametereingabe verwirklicht. 

Hier das Programm Teil 1 (Problem in Teil 2):

```
import java.io.*;

public class Funktion 
{
	int x;					//Funktionsvariable
	int AnzKoeff;			//Anzahl der Koeffizienten = Polynomgrad-1
	int[] Koeff;			//Koeffizenten
	String writeFunction;	//Hiermit soll das Polynom darstellbar sein
	String writeKoeff;		//Versuch: variablen Parameter über Stringeingabe
			
	public int getAnzKoeff()
	throws IOException
	{
		BufferedReader din = 	new BufferedReader(
								new InputStreamReader(System.in));
		int a;
		System.out.println("Geben sie die Anzahl der Funktionskoeffizienten an.");
		a = Integer.parseInt(din.readLine());
		AnzKoeff = a;
		System.out.println("Sie haben "+AnzKoeff+" gewählt.");
		return AnzKoeff;
	}
	
	public int getX()
	throws IOException
	{
		BufferedReader din = new BufferedReader(
				new InputStreamReader(System.in));
		int a;
		System.out.println("Geben sie die zuberechnende Stelle (x) an. ");
		a = Integer.parseInt(din.readLine());
		a= x;
		return x;
	}
		
	public void getKoeff()
	throws IOException
	{
		BufferedReader din = 	new BufferedReader(
								new InputStreamReader(System.in));
					
		Koeff = new int[AnzKoeff];
					
		for(int i = 0; i < AnzKoeff; ++i )
			{
						
			System.out.println( "Geben sie den " + i + ". Funktionskoeffizienten an." );
			Koeff[i] = Integer.parseInt(din.readLine());					
						
			}				
	}
	
	public String getFuncString()
	{
		String writeFunk = "";
		for(int i = 0; i < AnzKoeff; ++i )
			{
			writeFunk = ( Koeff[i] + "x^" + i + "+" + writeFunk );
			}
			
		writeFunction = writeFunk;
		System.out.println(writeFunction);
				
		return writeFunction;
	}
	
	/*public String getKoeffString()
	*{
	*	String writeFunk = (String)(Koeff[0]);
	*	for(int i = 0; i < AnzKoeff; ++i )
	*		{
	*		writeFunk = ( Koeff[i]+, + writeFunk );
	*		}
	*		
	*	writeFunction = writeFunk;
	*	System.out.println(writeFunction);
	*			
	*	return writeKoeff;
	*}
	*/
	
//	Hier wird das eigentliche Programm ausgeführt
	
	public static void funktion(double x, double... args)
		{
		double funktion 	= 0;

		for( int i = 0; i < args.length; ++i )
			{					
			funktion = funktion + args[i] * Math.pow( x , i );
			System.out.println( args[i] + " = a" + i + " für x^" + i );
//			System.out.println(funktion);
			}	
		System.out.println( "Für die obenstehenden Koeffizienten und x = " + x + " ist der Funktionswert: " + funktion );
		}
}
```

Und Teil 2 mit dem Problem:

```
import java.io.*;

public class TestFunktion 
{
	
	
	public static void main(String[] args)
	throws IOException
	{				
	Funktion funktionsTest = new Funktion();
	funktionsTest.getX();
	funktionsTest.getAnzKoeff();
	funktionsTest.getKoeff();
	funktionsTest.getFuncString();	

// HIER STECKT MEIN PROBLEM !! Die Eingabe soll variabel sein, genau wie die Methode.
	funktionsTest.funktion(funktionsTest.x , funktionsTest.Koeff[0],funktionsTest.Koeff[1],funktionsTest.Koeff[2]); 
	}	
}
```

In meinem JAVA-Buch steht zu diesem Thema nichts und auch im I-Net konnte ich bis jetzt nichts finden, vielleicht hat einer einen Tipp für mich.

LG Stefan.


----------



## Zaaa (27. Aug 2011)

Ich weiß nicht ganz ob ich dein Problem richtig verstehe, aber du könntest doch einfach ein Array mit den Parametern übergeben.


----------



## xfeldt (27. Aug 2011)

Ich beschäftige mich erst seit etwa einer Woche mit Java, vermutlich fehlen mir noch sehr viele Grundlagen. Aber ein Array als Parameter zu übergeben habe ich versucht, ich konnte jedoch im Buch nicht finden wie ich ein gesamtes Array einsetze. 
	
	
	
	





```
Koeff[]
```
 bzw 
	
	
	
	





```
Koeff
```
 ging nicht. Ich dachte man kann nur einzelne Teile des Arrays übergeben zB 
	
	
	
	





```
Koeff[1], Koeff[2]
```
 usw.


----------



## Fu3L (27. Aug 2011)

Guck mal hier in meinem Beitrag (direkt verlinkt) ab Zeile 53:

http://www.java-forum.org/codeschnipsel-u-projekte/122994-einfacher-funktionsplotter.html#post795645


----------



## Zaaa (27. Aug 2011)

Nein ein Array ist ein generell ersteinmal ein Container. Der es ermöglicht durch eine Variable auf Objekte desselben Typs zuzugreifen.

Hier ein kleines Beispiel, in dem du siehts das man auch gesamte Arrays übergeben kann

```
public class Test {
	public static void main(String[] args) {
		// erstellen des arrays
		int [] foo = new int[5];
		for (int i = 0; i < foo.length; i++) {
			// füge an Stelle i den Wert i ein
			foo[i] = i;
		}
		printArray(foo);
	}
	static void printArray(int [] bar){
		for (int i = 0; i < bar.length; i++) {
			System.out.println("Position "+ i+ " des Arrays enthält den Wert " +bar[i]);
		}
	}
}
```

Ansonsten hier der Verweis auf die Doku Arrays

Grüße
Zaaa


----------



## xfeldt (27. Aug 2011)

Ich checks heute nicht mehr, ich schaus mir morgen noch emal länger an. Aber vielen Dank schonmal.

LG Stefan


----------



## Spacerat (28. Aug 2011)

Im Zweifelsfalle
	
	
	
	





```
public Funktion(Object ... parameters) {
  // Konstruktor
}
```
für richtig viele Bauchschmerzen. Die Parameterliste ist so zumindest ganz weit offen. Übergib was du willst und wann du willst, von mir aus auch abwechselnd Skalare und Arrays oder beliebig viele andere Collections.


----------



## xfeldt (28. Aug 2011)

Zaaa hat gesagt.:


> Ich weiß nicht ganz ob ich dein Problem richtig verstehe, aber du könntest doch einfach ein Array mit den Parametern übergeben.



Ich denke genau das ist es 

Ich hätte es aber ohne die anderen Beiträge nicht verstanden. Beim Versuch das Programm aus diesem Beitrag http://www.java-forum.org/codeschnipsel-u-projekte/122994-einfacher-funktionsplotter.html#post795645 zu verstehen ist der Groschen gefallen. 

Vielen Dank an Alle.

Stefan


----------

