Anwender soll mathematische Funktion eingeben können, Einfachster Fnktionsplotter

Berg

Mitglied
Liebe Java Gemeinde,

ich mache meine ersten Gehversuche in Java und kämpfe mich durch den Java Video Kurs...halb bin ich schon durch...aber ich bin eben blutiger Anfänger und bräuchte bitte euren Rat...

Ich habe mir folgende Aufgabe gestellt. Es sollen für eine bestimmte mathematische Funktion die y-Werte berechnet werden, für x von 0 bis 10.
Für den ersten Anlauf habe ich die Funktion als gegeben in den Code geschrieben, also f(x)=y=x².
Im zweiten Anlauf möchte ich, dass der Anwender die Funktion frei eingeben kann. Als String kann ich sie über den Scanner einlesen...aber was mach ich dann damit. Angenommen der Anwender gibt ein x*x*x+2, müsste dann "irgendwie" in den Code kommen:

y[x] bei mir meinFloatArray[n] = meinIntArray[n]*meinIntArray[n]*meinIntArray[n]+2;

...ich stehe gerade voll am Schlauch.

Freue mich über eure Tipps.

Vielen Dank & viele Grüße
Berg


Java:
package meinMathePackage;
import java.util.Scanner;
import java.util.Scanner;

public class MatheFunktionProgramm 
{
	public static void main(String[] args) 
	{
		int[] meinIntArray = new int[11];
		float[] meinFloatArray = new float[11];
				
		for(int i=0; i<11; i++)		// Belegen von x
		{meinIntArray[i]=i;}
		
		Scanner scanner = new Scanner(System.in);			 
		System.out.print("Geben Sie die Funktion ein die berechnet werden soll y = f(x) = ");
		String eingabe = scanner.nextLine();
		System.out.println("Sie möchten folgende Funktion berechnen: " + eingabe);
		
		for (int n=0; n<11 ;n++)	// Berechnen von y ---- hier für die Funktion y = x² fest auscodiert
		{meinFloatArray[n] = meinIntArray[n] * meinIntArray[n];}
		
		int a=0;
		while (a <11){				// Ausgabe mit einer while Schleife
			System.out.println("Für x= "+a +" y= "+ meinFloatArray[a]);
			a=a+1;}
	}
}
 
Java:
......
		for(int i=0; i<11; i++)		// Belegen von x
		{meinIntArray[i]=i;}
......
		for (int n=0; n<11 ;n++)	// Berechnen von y ---- hier für die Funktion y = x² fest auscodiert
		{meinFloatArray[n] = meinIntArray[n] * meinIntArray[n];}

Kleiner Tipp: Auch wenn du dir durch diese "kompakte" Schreibweise Codezeilen sparst, probiere dich an die üblichen Java Konventionen zu halten (in diesem Fall Einrückung).
Dadurch wird der Code einfach lesbarer (vor allem für andere die du ja hier um Hilfe bittest). Lesbarkeit kommt vor Kürze!
 
Du könntestmit replaceAll arbeiten und alle X durch eine Zahl von 1 bis 10 ersetzen.
Ferner könntest du noch die Bedingung einbauen, dass die Funktion in der einfachstmöglichen Art eingegeben werden muss. (x^n + x^(n-1)+...+c)
 

Zurück
Oben