Rysowanie wykresu po wpisaniu funkcji na konsoli

0

próbuje zrobic program który narysuje wykres funkcji liniowej gdy np. wpisze w konsoli y=x+2 chciał bym żeby wyskoczyło okno z narysowanym wykresem gdy mam wpisane wszystko tak i nie chcę pobierać funkcji z konsoli wykres się rysuje

import java.awt.*;
import java.applet.*;

public class Figury extends  Applet {
    
    int width, height;
  
    public double fodx (double x) {
        double y;
       
        //y = -0.1*(x+1)*(2-x)*(x-5);
        //y = 1/5*x*(x+3)*(2-x)*(x+1);
        //  y=(x+1)/(3*x+6);
      y=x+2;
       // y = (3*x)/((x*x)-x+1);
        //y = Math.sin(x*Math.PI+100);
        //y= (x*x)-(3*x)+5;
        return y;
        
    }
    
    
    public void init () {
       
      
       width = 800;
       height = 600;
       setSize(width, height);
}
    
    public void paint(Graphics a) {
        a.setColor(new Color(0,0,0));
        
        a.drawLine (0, height / 2, width, height / 2);
        a.drawLine (width/2, 0, width/2, height);
        
        
            int skala_ox , zakres;
            double y1 , y2 ,x1 ,x2;        
             skala_ox = height/((height/2)-(int)fodx(50));
             zakres = 10;
             skala_ox =15;         
                                 
                x1=(zakres*-1) * skala_ox + (width /2 );    
                y1=(fodx(zakres*-1)) * skala_ox + (height / 2);
        for(double i=zakres*(-1); i  < zakres;i=i+0.1){
                    
                    y2 =  fodx(i+1)* skala_ox + (height / 2);
                    x2 = i * skala_ox + (width /2 );
                        a.setColor(new Color(255,0,0));
                       
                         a.drawLine( (int) x1  , (int) y1 , (int) x2  ,(int) y2);
                    x1= x2;
                    y1 = y2; 
        }
    
}


}

ale próbuję zrobić tak żeby funkcja była podawana przez użytkownika i nie potrafię proszę o pomoc na razie to co próbuje zrobić wygląda tak w lini Wykres w = new Wykres(dzialanie); podkreślone jest dzialanie i pisze (Cannot make a static reference to the non-static field dzialanie) proszę o pomoc

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.util.Scanner;


public class Wykres extends  Applet {
    
    int width, height;
    String dzialanie;
    
  
    public double fodx (double x) {
       
   	double y;
    	try
    	{
    	   y=Double.parseDouble(dzialanie);
    	   
    	   System.out.println("funkcja to1 :"+y);
    	}
    	catch(NumberFormatException w)
    	{
    	  y=x ;
    	   System.out.println("Błąd"+w);// wartość domyślna
    	}
      
       System.out.println("funkcja to :"+y);
       
        return y;
        
    }
    
    
    public void init () {
       
      
       width = 800;
       height = 600;
       setSize(width, height);
}
    
    public void paint(Graphics a) {
        a.setColor(new Color(0,0,0));
        
        a.drawLine (0, height / 2, width, height / 2);
        a.drawLine (width/2, 0, width/2, height);
        
        
            int skala_ox , zakres;
            double y1 , y2 ,x1 ,x2;        
             skala_ox = height/((height/2)-(int)fodx(50));
             zakres = 10;
             skala_ox =15;         
                                 
                x1=(zakres*-1) * skala_ox + (width /2 );    
                y1=(fodx(zakres*-1)) * skala_ox + (height / 2);
        for(double i=zakres*(-1); i  < zakres;i=i+0.1){
                    //y1 = (int) fodx(i);
                    y2 =  fodx(i+1)* skala_ox + (height / 2);
                    x2 = i * skala_ox + (width /2 );
                        a.setColor(new Color(255,0,0));
                       
                         a.drawLine( (int) x1  , (int) y1 , (int) x2  ,(int) y2);
                    x1= x2;
                    y1 = y2; 
        }
   
}
    
    public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		System.out.print ("Podaj równainie: " );		

		String wyrazenie = sc.nextLine();

		Wykres w = new Wykres(dzialanie);
		
		

	}
}

dodanie znaczników <code class="java"> oraz tagów - fp

0

No proszę... Nie możesz użyć nie-statycznego pola "dzialanie" w statycznej metodzie "main". Dopisz "static" przed "String dzialanie". Przecież komunikat kompilatora jest jasny w tym względzie.

PS. Nie czytałem całego Twojego kodu (TLDR), więc nie wiem, czy ogólnie dobrze postępujesz.

EDIT: Sorry, nie zauważyłem, że próbujesz używać zmiennej, której nigdzie nie inicjalizujesz.

0
  1. Wywołujesz konstruktor new Wykres(dzialanie), a taki konstruktor nie istnieje.
  2. Gdyby istniał to byłby zupełnie bezsensowny, Ty musisz przekazać do konstruktora to co wpisał użytkownik.
String wyrazenie = sc.nextLine();
 
Wykres w = new Wykres(wyrazenie);
...
public Wykres(String dzialanie)
{
    this.dzialanie = dzialanie;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1