大家好,在下有一个比较基础的问题想问你们:
    我编写了一个类,类里面有一个要经常被调用的方法,该方法返回一个数学函数的函数值
class PicPanel extends JPanel
{
       ……………………
        ……………………
      public double f(double x)
{
return Math.sin(x);
}}
但是找我这样编写程序的话,函数只能用编写者(我)来确定,
我想让用户自己输入函数想解析表达式,然后在调用这个函数,
请问大家,有什么好的方法或建议吗?

解决方案 »

  1.   

    我想让用户输入表达式,例如,如果用户输入“x*x+1”,我在一个面板中根据这个表达式,把区间[2,3]份成很多份,例如100份,然后根据这100个点的函数值(y值),把相邻的两个点连接起来,这样近似地得到一个图像,当我的结点取得越密的时候,这个函数图像就越精确,现在的问题是,我不知道应该怎样让用户输入一个表达式,然后我在我的程序中调用这个表达式。
      

  2.   


    //这样?
    public class panel {    public static void main(String[] args) {        test("3*4");
        }    static void test(String s) {
            String[] array = s.split("\\s*\\*\\s*");
            int int1 = Integer.valueOf(array[0]);
            int int2 = Integer.valueOf(array[1]);
        }
    }
      

  3.   


    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.event.*;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;public class mynew
    {
    public static void main(String[] args)
    {
    JFrame frame = new JFrame ( "MY TRY!");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    PicPanel panel = new PicPanel();

    frame.getContentPane().add(panel);
    frame.pack();
    frame.setVisible(true);
    }
    }class PicPanel extends JPanel
    {
    private int XPOS,YPOS,x1,x2,y1,y2,k=100;
    private float a,b,h;
    private JLabel kLabel;

    public PicPanel()
    {

    setPreferredSize(new Dimension(800,700)); h=(float)1/k;
    a=-30;
    b=30;
    XPOS=400;
    YPOS=400;

    kLabel = new JLabel("比例k:"+100);

    add(kLabel); }

    public void paintComponent(Graphics page)
    { super.paintComponent(page);
    page.setColor(Color.red);

    page.drawLine(XPOS,0,XPOS,2000); //画x轴
    page.drawString("x轴",700,YPOS+15); page.drawLine(0,YPOS,2000,YPOS); //画y轴
    page.drawString("y轴",XPOS+15,100);

    for(double x=a;x<=b;x=x+h) //描点和坐标变换
    {
    x1=XPOS+(int)(k*x);
    x2=XPOS+(int)(k*(x+h));
    y1=YPOS-(int)(k*f(x));
    y2=YPOS-(int)(k*f(x+h));

    page.drawLine(x1,y1,x2,y2);
    }

    }

    public double f(double x)
    {
    return Math.sin(x);
                    //就是这里啊,如果我想让用户自己输入一个函数,不知道应该怎么弄呢?
    }}