Variable Parameter in Konstruktor

xfeldt

Mitglied
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
Code:
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):
Java:
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:
Java:
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.
 
Ich weiß nicht ganz ob ich dein Problem richtig verstehe, aber du könntest doch einfach ein Array mit den Parametern übergeben.
 
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.
Code:
Koeff[]
bzw
Code:
Koeff
ging nicht. Ich dachte man kann nur einzelne Teile des Arrays übergeben zB
Code:
Koeff[1], Koeff[2]
usw.
 
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
Java:
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
 
Im Zweifelsfalle
Java:
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.
 

Zurück
Oben