Wie kann ich meine Methode aufrufen?

Wasserranzen

Aktives Mitglied
Hallo,

Ich habe ein kleines Problem mit meinem Programm. Das Programm soll die Tangentensteigung, für eine Funktion 2.Grades, an einer beliebigen Stelle x_0 berechnen. Das Programm ist soweit fertig, nur schaffe ich es nicht die Methode für die Berechnung aufzurufen.

Weiß jemand vielleicht,wo mein Fehler liegt ? Der Fehler liegt in Zeile 14.

Danke.
Java:
import java.util.Scanner; // t(x) = f'(x_0)*(x-x_0)+f(x_0) = f'(x_0)*x-f'(x_0)*x_0+f(x_0)
public class Tangente
{
    
public static void main(String[]args)
{
Scanner x = new Scanner(System.in);
System.out.println("Bitte geben Sie die Stelle ein.");
int x_0 = x.nextInt();
System.out.println("Geben Sie die Koeffizienten ein.");   
int a = x.nextInt();
int b = x.nextInt();
int c = x.nextInt();
System.out.println("Die Tangente an der Stelle"+x_0+"lautet:"+TangenteR(AbleitungS,Funktionswert,x_0,x));
}
    
public static int AbleitungX(int a)   
{
    
int Ableitung = a*2;

return Ableitung;
    
}
    
public static int AbleitungX2(int b)
{
    int Ableitung2 = b;
    return Ableitung2;
}
    
public static int AbleitungS(int x_0,int a, int b )
{
    
int AbleitungS = AbleitungX(a)*x_0+AbleitungX2(b);   

    
    return AbleitungS;
    
}
    
public static int Funktionswert(int a,int b,int c, int x_0)   
{
    
int Funktionswert = a*x_0+x_0+b*x_0+c;   
    
return Funktionswert;   
}
    
public static int TangenteR(int AbleitungS, int Funktionswert,int x,int x_0)   

{
    
int Tangente = AbleitungS*x-AbleitungS*x_0+Funktionswert;   
    
    
return Tangente;   
}
    
    
    
    
    
    
}
 

Wasserranzen

Aktives Mitglied
Ich habe es jetzt so gemacht.
Java:
System.out.println
("Die Tangente an der Stelle"+" "+ x_0+"lautet:"+TangenteR(AbleitungS(x_0,a,b),Funktionswert(a,b,c,x_0),x,x_0));

Nur das Problem ist das "x" nicht als ein Parameter angesehen wird, sondern als eine Zahl.
Wie kann ich "Tangente" so modifizieren, dass x keine Zahl mehr ist, sondern ein Art Platzhalter?
Edit: Scanner wurde als y deklariert.
 

mihe7

Top Contributor
Edit : Warum muss ich sie denn aufrufen?
Weil in Objekte Nachrichten austauschen. Das geschieht durch Methodenaufrufe.

Du willst vermutlich Kompositionen von Funktionen haben. Wenn Du eine Funktion f:IN -> IN hast und eine Funktion g:IN -> IN, dann kannst Du eine Funktion h:IN -> IN mit h := f ° g (wobei ° die Komposition darstellt) haben. Das wäre im Bereich der funktionalen Programmierung anzusiedeln, die seit Java 8 ansatzweise unterstützt wird, und zwar mit Methodenreferenzen bzw. funktionalen Interfaces.
 

Wasserranzen

Aktives Mitglied
x kennzeichnet an der Stelle Dein Scanner-Objekt.

Habe ich jetzt als y umdeklariert. Trotzdem bekomme ich nur Zahlen raus.
Das "x" soll nur ein Platzhalter sein. Wie könnte ich dies bewerkstelligen?

Java:
public static int TangenteR(int AbleitungS, int Funktionswert,String x,int x_0)   

{
    
int Tangente = AbleitungS*x-AbleitungS*x_0+Funktionswert;   
    
    
return Tangente;   
}
 
K

kneitzel

Gast
Also die Funktion kann ja nicht mit Platzhaltern rechnen, sondern es geht darum, einen konkreten Wert zu berechnen. Also muss die Funktion konkrete Werte bekommen. Mit diesen konkreten Werten kann die Funktion dann rechnen.

Und wenn Du mathematisch etwas berechnen willst, dann ist der Typ String wohl eher nicht geeignet.

Also musst Du dir überlegen, an welcher Stelle Du denn nun den Wert berechnet haben willst und das übergeben (so ich jetzt richtig verstanden habe, was Du da machen willst ...).

Und wieso nennst Du eine Scanner instanz x oder y? Nenne Variablen doch bitte so, dass klar ist, was da drin gespeichert ist. Oft wird bei sowas einfach der Klassenname in camel case genommen (also Scanner scanner = new Scanner(System.in);) oder so Du mehr mit Scannern machst als nur User Input zu lesen, dann kommt halt ein userInputScanner oder so in Frage. Das nur als kleine Anregung.
 

Wasserranzen

Aktives Mitglied
Danke für den Tipp. Scanner x begleitet mich schon seit ich mit Java angefangen habe.
Die Sache mit der Tangente ist ja, dass ich keine Werte haben möchte sondern, es soll folgendes rauskommen.
t(x) = f'(x_0)*x-f'(x_0)*x_0+f(x_0) = f'(x_0)*(x-x_0)+f(x_0)
Ich wollte eigentlich die Vereinfachung nehmen, die wollte aber nicht funktionieren.
 

Wasserranzen

Aktives Mitglied
Java:
System.out.println("t(x) = f'(x_0)*x-f'(x_0)*x_0+f(x_0) = f'(x_0)*(x-x_0)+f(x_0)");

Wird dann nicht nur das ausgegeben was in der Klammer steht? Ich möchte, aber das die Tangente rauskommt.

Als Beispiel:
f(x) = x² , x_0 = 2
f'(x) = 2x
f(2) = 4
f'(2) = 4
t(x) = 4*x-8+4 = 4*x-4<---- Das möchte ich haben.

Sollte ich es schaffen, dieses Programm zu laufen zu bringen, dann soll noch eine Überprüfung reinkommen ob folgendes gilt:
f(x_0) = t(x_0)
f'(x_0) = t'(x_0)
 

mihe7

Top Contributor
Ich hoffe, dass ich Dich jetzt richtig verstanden habe:
Java:
public class Test {
    static String sign(int x) {
        return x < 0 ? " - " : " + ";
    }

    // fx = Funktionswert an Stelle x0
    // dfx = Wert der Ableitung an Stelle x0
    static String t(int x0, int fx, int dfx) {
        int right = -dfx*x0 + fx;

        return "t(x) = " + dfx + " * x" + sign(-dfx*x0) + Math.abs(dfx*x0) 
            + sign(fx) + Math.abs(fx) + " = " + dfx + " * x" + sign(right) + Math.abs(right);
    }

    public static void main(String[] args) {
        System.out.println(t(2, 4, 4));
    }
}
 

mihe7

Top Contributor
Ich habe einfach Deine Formel t(x) genommen und an den entsprechenden Stellen die Werte berechnet.

Muss man so einen großen Umweg machen,nur um "x" als Platzhalter zu bekommen?
Das kommt darauf an. Wenn Du eine Formel (= Zeichenkette) ausgeben willst, dann besteht der String aus verschiedenen Teilen und die musst Du halt entsprechend formatieren. Es ginge wahrscheinlich auch schöner, aber da habe ich gerade keinen Nerv dazu :)

Etwas anderes ist es, wenn Du einfach nur den berechneten Wert haben willst.
 

Wasserranzen

Aktives Mitglied
Ich habe einfach Deine Formel t(x) genommen und an den entsprechenden Stellen die Werte berechnet.


Das kommt darauf an. Wenn Du eine Formel (= Zeichenkette) ausgeben willst, dann besteht der String aus verschiedenen Teilen und die musst Du halt entsprechend formatieren. Es ginge wahrscheinlich auch schöner, aber da habe ich gerade keinen Nerv dazu :)

Etwas anderes ist es, wenn Du einfach nur den berechneten Wert haben willst.

Ich will nur das am Ende, sowas steht wie z.b 4x-4. Kann man das bewerkstelligen, ohne alles umschreiben zu müssen?
 

mihe7

Top Contributor
So?
Java:
import java.util.Scanner; // t(x) = f'(x_0)*(x-x_0)+f(x_0) = f'(x_0)*x-f'(x_0)*x_0+f(x_0)

public class Tangente {
    public static void main(String[]args) {
        Scanner x = new Scanner(System.in);
        System.out.println("Bitte geben Sie die Stelle ein.");
        int x_0 = x.nextInt();
        System.out.println("Geben Sie die Koeffizienten ein.");   
        int a = x.nextInt();
        int b = x.nextInt();
        int c = x.nextInt();
        System.out.println("Die Tangente an der Stelle "+x_0+" lautet: "+
                TangenteR(AbleitungS(x_0, a, b), Funktionswert(a, b, c, x_0), x_0));
    }
    
    public static int AbleitungX(int a) {
        int Ableitung = a*2;
        return Ableitung; 
    }
    
    public static int AbleitungX2(int b) {
        int Ableitung2 = b;
        return Ableitung2;
    }
    
    public static int AbleitungS(int x_0,int a, int b) {  
        int AbleitungS = AbleitungX(a)*x_0+AbleitungX2(b);       
        return AbleitungS;    
    }
    
    public static int Funktionswert(int a,int b,int c, int x_0) {    
        int Funktionswert = a*x_0*x_0+b*x_0+c;       
        return Funktionswert;   
    }
    
    public static String TangenteR(int AbleitungS, int Funktionswert, int x_0) {
        int rest = -AbleitungS*x_0+Funktionswert;
        String operator = rest < 0 ? "-" : "+";
        return AbleitungS +"*x"+operator+Math.abs(rest);
    }
}
 

Wasserranzen

Aktives Mitglied
So?
Java:
import java.util.Scanner; // t(x) = f'(x_0)*(x-x_0)+f(x_0) = f'(x_0)*x-f'(x_0)*x_0+f(x_0)

public class Tangente {
    public static void main(String[]args) {
        Scanner x = new Scanner(System.in);
        System.out.println("Bitte geben Sie die Stelle ein.");
        int x_0 = x.nextInt();
        System.out.println("Geben Sie die Koeffizienten ein.");  
        int a = x.nextInt();
        int b = x.nextInt();
        int c = x.nextInt();
        System.out.println("Die Tangente an der Stelle "+x_0+" lautet: "+
                TangenteR(AbleitungS(x_0, a, b), Funktionswert(a, b, c, x_0), x_0));
    }
   
    public static int AbleitungX(int a) {
        int Ableitung = a*2;
        return Ableitung;
    }
   
    public static int AbleitungX2(int b) {
        int Ableitung2 = b;
        return Ableitung2;
    }
   
    public static int AbleitungS(int x_0,int a, int b) { 
        int AbleitungS = AbleitungX(a)*x_0+AbleitungX2(b);      
        return AbleitungS;   
    }
   
    public static int Funktionswert(int a,int b,int c, int x_0) {   
        int Funktionswert = a*x_0*x_0+b*x_0+c;      
        return Funktionswert;  
    }
   
    public static String TangenteR(int AbleitungS, int Funktionswert, int x_0) {
        int rest = -AbleitungS*x_0+Funktionswert;
        String operator = rest < 0 ? "-" : "+";
        return AbleitungS +"*x"+operator+Math.abs(rest);
    }
}

Ja genau. Ich kann aber die Modifizierung nicht verstehen. Was hast du verändert?
 

mihe7

Top Contributor
In erster Linie TangenteR, die jetzt eine Zeichenkette zurückgibt. Das "x" im Parameter braucht es nicht, da es ja nicht als Wert übergeben wird sondern tatsächlich nur als "x" in der Zeichenkette auftritt.

Dann natürlich den Aufruf von TangenteR in main angepasst. Und noch einen kleinen Fehler in Funktionswert behoben (es soll ja x_0*x_0 und nicht x_0+x_0 berechnet werden).

That's it.
 

Wasserranzen

Aktives Mitglied
In erster Linie TangenteR, die jetzt eine Zeichenkette zurückgibt. Das "x" im Parameter braucht es nicht, da es ja nicht als Wert übergeben wird sondern tatsächlich nur als "x" in der Zeichenkette auftritt.

Dann natürlich den Aufruf von TangenteR in main angepasst. Und noch einen kleinen Fehler in Funktionswert behoben (es soll ja x_0*x_0 und nicht x_0+x_0 berechnet werden).

That's it.

Danke, diesen Fehler hatte ich überhaupt nicht bemerkt. Genau, die letzte Methode. Was genau müsste ich bei mir ändern?
 

mihe7

Top Contributor
Die Methode baut eine Zeichenkette zusammen anstatt den Wert vollständig auszurechnen. Das ist alles.

Du hast ja gerechnet:
Java:
int Tangente = AbleitungS*x-AbleitungS*x_0+Funktionswert;
Und wolltest aber alles außer das "x" ausgerechnet haben und dann eine Zeichenkette, die das x an den entsprechenden Stelle entält, zurückhaben.

Der Code
Java:
return AbleitungS + " * x"
Würde eine Zeichenkette liefern, die mit dem Inhalt der Variablen AbleitungS (eine Zahl beginnt) und dann " * x" (ohne Anführungszeichen) anfügt.

Beim Anfügen des rechten Teils muss man aber aufpassen, denn Du willst ja nicht das Vorzeichen ausgeben, sondern die Rechenoperation. Daher der "operator". Du kannst ja selbst mal ein wenig mit den Zeichenketten rumprobieren.
 

Wasserranzen

Aktives Mitglied
Die Methode baut eine Zeichenkette zusammen anstatt den Wert vollständig auszurechnen. Das ist alles.

Du hast ja gerechnet:
Java:
int Tangente = AbleitungS*x-AbleitungS*x_0+Funktionswert;
Und wolltest aber alles außer das "x" ausgerechnet haben und dann eine Zeichenkette, die das x an den entsprechenden Stelle entält, zurückhaben.

Der Code
Java:
return AbleitungS + " * x"
Würde eine Zeichenkette liefern, die mit dem Inhalt der Variablen AbleitungS (eine Zahl beginnt) und dann " * x" (ohne Anführungszeichen) anfügt.

Beim Anfügen des rechten Teils muss man aber aufpassen, denn Du willst ja nicht das Vorzeichen ausgeben, sondern die Rechenoperation. Daher der "operator". Du kannst ja selbst mal ein wenig mit den Zeichenketten rumprobieren.

Ich werde ein bisschen experimentieren. Vielen Dank für die Hilfe.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C60 Methoden Main-Methode erkennt meine Arrays nicht. Java Basics - Anfänger-Themen 7
L Warum erkennt java meine methode nicht? Java Basics - Anfänger-Themen 17
K Warum adiert meine Methode nicht die eins ? Java Basics - Anfänger-Themen 19
gummibaerchen Methode überschreibt meine Variable Java Basics - Anfänger-Themen 5
C Rechnen mit Brüchen, ist meine Lösung soweit richtig? Java Basics - Anfänger-Themen 4
P Wie kann ich meine Keylistener Klasse unterscheiden lassen, von welcher "Quelle" der Input kommt? Java Basics - Anfänger-Themen 2
A Methoden Guten Tag , ich wollte so machen dass wenn meine frog an eine fly/bee geht dann an meine Tafel geht der zahl +1 hoch. Java Basics - Anfänger-Themen 2
T Meine Klasse wird nicht gefunden Java Basics - Anfänger-Themen 1
J Meine Mails gehen nicht raus Java Basics - Anfänger-Themen 8
W Streams in Java und was bedeutet meine Konsolen-Ausgabe? Java Basics - Anfänger-Themen 4
frager2345 Warum muss ich hier im Konstruktor meine Exeption nicht abfangen ? Java Basics - Anfänger-Themen 4
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
sserio Wieso werden nicht alle Primzahlen bis 1000 in meine Liste gepackt ? Java Basics - Anfänger-Themen 8
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
O Warum ist meine Antwort falsch? Java Basics - Anfänger-Themen 3
E Meine JCombobox werte an ohne selectiert zu haben Java Basics - Anfänger-Themen 6
Zrebna Umgebungsvariable Wieso wird meine verwendete JDK-Version in der Prompt nicht erkannt? Java Basics - Anfänger-Themen 6
L Meine erste eigene Exception Klasse Java Basics - Anfänger-Themen 10
B Sind meine If-Statements richtig angesetzt ? Java Basics - Anfänger-Themen 27
N Wie kann ich eine meine Variable Final machen? Java Basics - Anfänger-Themen 1
N Klassen Warum kann meine Klasse nicht auf Methoden der anderen Klasse zugreifen? Java Basics - Anfänger-Themen 6
L Worauf muss ich achten, wenn ich externe Bibliotheken für meine Anwendungen verwende? Java Basics - Anfänger-Themen 6
B Warum werden meine System.out.println's übersprungen? Java Basics - Anfänger-Themen 9
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
H Meine Tabelle befüllen in .fxml Java Basics - Anfänger-Themen 16
E Warum kann ich meine jar-Datei nicht öffnen Java Basics - Anfänger-Themen 20
WPS1000 Input/Output Wie aktiviere ich den Daten Transfer von der RS232 in meine Java Applikation Java Basics - Anfänger-Themen 2
T Rekursion Warum bricht meine Funktion nicht ab Java Basics - Anfänger-Themen 4
S Meine Java "Wahrsagerin" Java Basics - Anfänger-Themen 9
C Ich brauche hilfe für meine Klausur Java Basics - Anfänger-Themen 13
W Wie lasse ich meine Ausgabe nach dem Lesen verschwinden ? Java Basics - Anfänger-Themen 1
W Warum funktioniert meine if Anweisung nicht? Java Basics - Anfänger-Themen 8
R Meine Ratemaschine Java Basics - Anfänger-Themen 3
V Warum speichert meine String-Variable nummerische Werte? Java Basics - Anfänger-Themen 3
V Erste Schritte Warum geht meine continue Anweisung nicht? Java Basics - Anfänger-Themen 8
GreenTeaYT HashMap dupliziert meine Elemente? Java Basics - Anfänger-Themen 2
B Ist meine Klasse richtig kommentiert? Java Basics - Anfänger-Themen 2
J Erste Schritte Vorsicht Spaghetti-Code! Wie verschachtel ich meine If-Anweisung??? Java Basics - Anfänger-Themen 4
snipesss Eclipse Neon findet meine Projekte nicht? Java Basics - Anfänger-Themen 1
snipesss IDE findet meine .txt Datei nicht! Java Basics - Anfänger-Themen 12
J Verstehe meine HashSet Ausgabe nicht Java Basics - Anfänger-Themen 5
E Erste Schritte [Noob] Warum geht meine For-Schleife nicht? Java Basics - Anfänger-Themen 2
E Erste Schritte [Noob-Frage] Meine If-Abfrage macht nicht, was sie soll... Java Basics - Anfänger-Themen 2
J Erste Schritte .class datei in meine form inkludieren Java Basics - Anfänger-Themen 3
D Wie bekomme ich meine Ausgabe in Form von "2^x" hin? Java Basics - Anfänger-Themen 1
Z Fibonacci rekursiv meine Erklärung stimmt so? Java Basics - Anfänger-Themen 2
C Meine erste Funktion Java Basics - Anfänger-Themen 12
A Meine erste Bibliothek erstellen Java Basics - Anfänger-Themen 24
Z Meine ersten Gehversuche Java Basics - Anfänger-Themen 11
Dit_ Ich kenne meine Koordinaten. Wo bin ich? Java Basics - Anfänger-Themen 2
K Klassen Meine Klasse wird nicht anerkannt Java Basics - Anfänger-Themen 7
M Suche Korrektor für meine Lösung (FH: Java1 - Übungsklausur) Java Basics - Anfänger-Themen 4
D Wie kann meine Klasse in ein JPanel zeichnen? Java Basics - Anfänger-Themen 14
J Datentypen Meine Hashliste ist nicht unique Java Basics - Anfänger-Themen 5
S OOP Wie muss meine Klasse zu dieser main aussehen? Java Basics - Anfänger-Themen 5
M Meine erste Java Programmierung funzt nicht :-( Java Basics - Anfänger-Themen 34
C Denkanstoss für meine Auswertung Java Basics - Anfänger-Themen 5
S Irgendwie kann ich meine Eclipse Projekte nicht mehr veraendern..? Java Basics - Anfänger-Themen 5
M Wo sind meine double-Zahlen? Java Basics - Anfänger-Themen 2
A Hilfe meine Titel werden alle abgelehnt Java Basics - Anfänger-Themen 4
K Wieso schaltet meine CheckBox von selbst um ? Java Basics - Anfänger-Themen 31
K Warum wird meine Graphik zwei Mal gezeichnet ? Java Basics - Anfänger-Themen 12
Kr0e Eclips + JOGL -> Wo ist meine MAIN-Funktion hin ? Java Basics - Anfänger-Themen 9
R Meine erste Klasse: Punkt Java Basics - Anfänger-Themen 3
U Habe meine .class files gelöscht. Java Basics - Anfänger-Themen 3
N Programm das mir anzeigt wo meine Freundin ist. Java Basics - Anfänger-Themen 10
Schandro Meine Fragensammlung Java Basics - Anfänger-Themen 9
S daten per url in meine Klasse? Java Basics - Anfänger-Themen 12
A meine eigene IO Klasse Java Basics - Anfänger-Themen 3
D Meine SetMethode geht nicht || Fenster schließen Java Basics - Anfänger-Themen 3
T Java Programm ordnet meine Objecte immer falsch an Java Basics - Anfänger-Themen 4
M wie kann ich meine Projekte auf einen stick speichern? Java Basics - Anfänger-Themen 6
S Wie ist meine Strucktur Java Basics - Anfänger-Themen 11
F Eingabe darf nur 1 oder 0 sein. Meine Lösung macht Probleme. Java Basics - Anfänger-Themen 8
A Möchte Java - Chat in meine Homepage einbinden. Java Basics - Anfänger-Themen 4
M meine ersten versuche Java Basics - Anfänger-Themen 8
M wie pack ich das swt in meine *.jar Java Basics - Anfänger-Themen 8
S ich stör schon widr wegen meine gui Java Basics - Anfänger-Themen 2
R Welches inferface und somit welche IP benutzt meine JVM? Java Basics - Anfänger-Themen 2
M Meine Java Programm hägt durch waitFor() ! HILFE! Java Basics - Anfänger-Themen 10
G Meine erste IF Abfrage Java Basics - Anfänger-Themen 11
G wie meine java applikation installierbar machen? Java Basics - Anfänger-Themen 11
R BorderLayout macht meine Zeichnung kaputt Java Basics - Anfänger-Themen 14
A Parsen einer XML-Datei: Wo sind meine Start-Tags??? Java Basics - Anfänger-Themen 22
A Buttons für meine Homepage Java Basics - Anfänger-Themen 2
P meine java applets laufen nicht bei meinen freunden Java Basics - Anfänger-Themen 5
G Klassen: Wann initialisiere ich wo meine Variabeln Java Basics - Anfänger-Themen 6
K Mein Pc will meine Programme nicht kompilieren Java Basics - Anfänger-Themen 2
J Warum funktioniert meine Umwandlung nicht? Java Basics - Anfänger-Themen 3
G Public class??? Findet meine Klasse nicht. Java Basics - Anfänger-Themen 5
T Rekursive Methode Java Basics - Anfänger-Themen 13
Ü Methode soll Quadrat aus der Summer zurückgeben Java Basics - Anfänger-Themen 10
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
Leyla Spezifischte Methode Java Basics - Anfänger-Themen 16
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
T Aufruf der Methode einer Oberklasse, wenn sie in der Unterklasse überschrieben ist. Polymorphie. Java Basics - Anfänger-Themen 2
C Zugriff auf Methode Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben