java 如何让用户自定义函数呢?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 如何让用户自定义函数呢?相关的知识,希望对你有一定的参考价值。
大家好,在下有一个比较基础的问题想问你们:
我编写了一个类,类里面有一个要经常被调用的方法,该方法返回一个数学函数的函数值
class PicPanel extends JPanel
…………………
……………………
public double f(double x)
return Math.sin(x);
但是找我这样编写程序的话,函数只能用编写者(我)来确定,
我想让用户自己输入函数想解析表达式,然后在调用这个函数,
请问大家,有什么好的方法或建议吗?
我是想让用户输入一个数学函数的表达式,然后我的那个类中 画出用户输入的数学函数的图像,因为我是用描点法画图的,所以就是要不断的调用 用户输入的表达式,我觉得你们可能误解了我的意思了吧?
假设你写一个方法:public void math(String str);
现在用户传递一个String: "10 + 5";
你需要对这个String进行解析,然后调用10.add(5).
计算公式千差万别,用户输入的string有无限可能,你不可能将所有可能一网打尽的。比如(10+5)*6+6+7*8这样的算术式你解析起来很困难的。
所以建议你到网上搜索有没有已经存在的开源的算术表达式解析器。自己很麻烦。
但我猜想,就算有这样的算术表达式解析器,也就是写很简单的计算,对于复杂的如求模,求和,求平均,统计,傅里叶变换等等高级算术肯定是不支持的
如果你真的打算自己实现,那么就需要对输入框经行限制,比如只允许用户输入数字和运算符,这样给你解析字符串带来方便。 参考技术A 可以在主函数里接收解析表达式,如:sin(x), cos(x)等。
将函数参数double x改为String x,接收主函数中用户自己输入的串,然后在函数体中
if (x.equals("sin"))
else if (x.equals("cos"))
……
具体的代码自己写吧,不难 参考技术B 接收一个参数,调用方法的时候,把接收的参数传进去,代替你自己写的.本回答被提问者采纳
Java中如何调用函数和自定义函数
调用函数
System.out.println("hello world");
println即为函数,out为是输出对象,System为java系统类。
java是面向对象语言,调用非静态方法时,需要创建一个类的对象才能调用方法;
调用静态方法时,直接用类名调用即可。
import java.util.Array; //调用其他包下的方法时需要导包
Array.sort(arr); //Array是工具类,方法都为静态方法
定义函数
修饰符 返回值类型 方法名(参数类型 参数名)
...
方法体
...return 返回值
;
方法包含一个方法头和一个方法体。下面是一个方法的所有部分:
修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。
方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
方法体:方法体包含具体的语句,定义该方法的功能。
注意: 在一些其它语言中方法指过程和函数。一个返回非void类型返回值的方法称为函数;一个返回void类型返回值的方法叫做过程。
拓展内容
java
Java源程序(.java文件)——>java字节码文件(.class文件)——>由解释执行器(java.exe)将字节码文件加载到java虚拟机(jvm)——>字节码文件(.class)就会在java虚拟机中执行。
Java的基本包
java.lang 其中包含有:
接口:Comparable、Cloneable、Runable等
类:八个基本数据类型封装类、Math、Runtime、Object、String、StringBuffer、Thread、Exception等
1.调用函数方法:对象名.函数名
需要实例化对象,后调用
2.自定义函数:
结构为:[方法修饰符] <方法返回值类型> <方法名>([<参数列表>])
方法体
有以下几种函数:
方法有2种修饰符
1)有public、protected、private三种显示的访问控制修饰符
2)还可以有static 、 final 、abstract 这三个修饰符
方法含有修饰符的例子:
扩展:构造方法
构造函数具有如下特点:
(1)构造方法的方法名必须与类名相同,其它方法不能和类名相同。
(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
(4)构造方法不能由编程人员调用,而由系统调用。
(5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
(6)构造方法可以重载,以参数的个数,类型,或排列顺序区分。
使用无参数构造函数的例子:
class Test
String name;
Test()
name="张三";
public static void main(String[] args)
Test t1=new Test();
System.out.println(t1.name);
t1.name="拉拉";
System.out.println(t1.name);
这里应该说的是调用方法,java中一般讲函数成为方法。
可以将方法分为两大类:静态方法和实例方法。
1.调用静态方法时,直接使用<类名>.<方法名>(参数)的方式进行调用,代码如下
可以查看StringUtils.isBlank的源码如下
可以看到isBlank方法被,static关键字修饰,表明该方法是一个静态方法。在调动静态方法时不需要初始化实例,直接使用<类名>.<方法名>(参数)的方式进行调用即可。
2.调用实例方法,顾名思义调用实例方法时,需要先初始化对应的实例,才可以调用该方法,先来看一下实例方法的定义代码:
上述代码中,定义了testMethod这个实例方法,在调用的时候,需要先实例化对象test,让后在调用test.testMethod方法。执行结果如下
参考技术C不是很专业,我说说最简单的吧!
函数的定义
public void addMethod(int a,int b)System.out.println("a="+a);
return a+b;
上述代码中
public是方法的访问控制符,其余还有private protected和默认,详情请百度;
void 是函数的返回类型为空,这个如果有点基础都应该是知道的,我就不赘述了;
addMethod是方法名,在调用的时候会使用;
int a ,int b就是方法的参数,在调用的时候一定要传入,和定义的方法的参数一样的类型和数量,不然找不到我们定义的方法;
函数的调用
System.out.println(addMethod(3,4));这是 控制台就会打印
a=37
这是最简单的一种了,纯手打,谢谢
参考技术D需要先把调用的函数所在的包引入,例如import java.util.HashMap,如果在同一个包内,就不需要引入.
如果是static(静态)方法,直接"类名.方法名"调用,如果不是静态方法,需要实例化对象再调用.
自定义函数和系统函数都是一样的调用规则
以上是关于java 如何让用户自定义函数呢?的主要内容,如果未能解决你的问题,请参考以下文章