import java.util.Scanner;/*四则运算*/class arithmetic{privatedouble n1;privatedouble n2;publicdouble getN1() {return n1;}publicvoid setN1(double n1) {this.n1 = n1;}publicdouble getN2() {return n2;}publicvoid setN2(double n2) {this.n2 = n2;}double subtration(double n1,double n2){ return n1-n2;}double addition(double n1,double n2){return n1+n2;}double multiplication(double n1,double n2){ return n1*n2;}double division(double n1,double n2){return n1/n2;}public arithmetic(double n1,double n2){ this.getN1();this.getN2();}}/*计算三角函数值*/class TriFun{privatedouble x;publicdouble getX() {return x;}publicvoid setX(double x) {this.x = x;}publicvoid sin(){System.out.println("正弦值为"+Math.sin(x));}publicvoid cos(){System.out.println("余弦值为"+Math.cos(x));}publicvoid tan(){System.out.println("正切值为"+Math.tan(x));}publicvoid asin(){if(x>=-1&&x<=1)System.out.println("反正弦值为"+Math.asin(x));elseSystem.out.println("没有反正弦值!");}publicvoid acos(){if(x>=-1&&x<=1)System.out.println("反余弦值为"+Math.asin(x));elseSystem.out.println("没有反余弦值!");}publicvoid atan(){if(x!=0)System.out.println("反正切值为"+Math.atan(x));elseSystem.out.println("反正切值为PI/2="+Math.PI/2); }public TriFun(double x){this.x=x;}}/*一元二次方程求解*/class LinearEquation{double a, b, c;publicdouble getA() {return a;}publicvoid setA(double a) {this.a = a;}publicdouble getB() {return b;}publicvoid setB(double b) {this.b = b;}publicdouble getC() {return c;}publicvoid setC(double c) {this.c = c;}public LinearEquation(double a,double b,double c){ this.a=a;this.b=b;this.c=c;}publicvoid Answer(){double i;double x1 = 0;double x2 = 0;i = b*b-4*a*c;if (i>= 0) {x1 = ((-b) + Math.sqrt(i)) / 2 * a;x2 = ((-b) - Math.sqrt(i)) / 2 * a;System.out.println("x1="+x1);System.out.println("x2="+x2);}elseSystem.out.println("方程没有实数解!\n");}}/*一元三次方程*/class LinEquation extends LinearEquation{privatedouble d;publicdouble getD() {return d;}publicvoid setD(double d) {this.d = d;}public LinEquation(double a, double b, double c,double d) { super(a, b, c);this.d=d;}publicvoid QiuJie(){System.out.println("x1+x2+x3 ="+(-b/a));System.out.println("1/x1+1/x2+1/x3 ="+(-c/d));System.out.println("x1*x2*x3 ="+(-d/a));System.out.println("请根据上述提示自行计算!\n");}}/*阶乘和m的n次方求解*/interface factorialandPower{long fact(double m);long intPower(double m,double n);}class Calu implements factorialandPower{double m,n;publicdouble getM() {return m;}publicvoid setM(double m) {this.m = m;}publicdouble getN() {return n;}publicvoid setN(double n) {this.n = n;}@Overridepubliclong fact(double m) {int i,sum = 1;for(i=1;i<=m;i++)sum=sum*i;return sum;}@Overridepubliclong intPower(double m, double n) { double i,sum=1;for(i=1;i<=n;i++)sum=sum*m;return (long)sum;}}/*计算定积分*/class Integration{double a,b;publicdouble getA() {return a;}publicvoid setA(double a) {this.a = a;}publicdouble getB() {return b;}publicvoid setB(double b) {this.b = b;}}class fxe extends Integration{void go(double a,double b) {double retval = 0;double delta = (b - a) / 1000000;for(int i = 0; i< 1000000; i++){retval += delta*f1(a+(2*i+1)*delta/2);}System.out.println("积分值为:"+retval);}double f1(double x) {return x*Math.exp(x);}}class fxsin extends Integration{void go(double a,double b) {double retval = 0;double delta = (b - a) / 1000000;for(int i = 0; i< 1000000; i++){retval += delta*f2(a+(2*i+1)*delta/2);}System.out.println("积分值为:"+retval);}double f2(double x) {return x*Math.log(x);}}/*计算排列组合*/class ArrAndCom{privateint n,k;publicint getN() {return n;}publicvoid setN(int n) {this.n = n;}publicint getK() {return k;}publicvoid setK(int k) {this.k = k;}public ArrAndCom(int n,int k){this.n=n;this.k=k;}publicvoid Arr(){int i,sum1= 1,sum2=1;for(i=1;i<=n;i++)sum1=sum1*i;for(i=1;i<=n-k;i++)sum2=sum2*i;int sum=sum1/sum2;System.out.println(n+"中选"+k+"的排列为"+sum+"\n");}publicvoid Com(){int i,sum1= 1,sum2= 1,sum3 =1;for(i=1;i<=n;i++)sum1=sum1*i;for(i=1;i<=n-k;i++)sum2=sum2*i;for(i=1;i<=k;i++)sum3=sum3*i;int sum4=1*sum1/(1*sum2*sum3);System.out.println(n+"中选"+k+"一共有"+sum4+"种组合!\n");}}publicclass Calculator {publicstaticvoid main(String[] args) {System.out.println("****欢迎使用计算器!****\n");System.out.println("1-简单四则运算;");System.out.println("2-计算三角函数值;");System.out.println("3-一元二次方程求解;");System.out.println("4-一元三次方程求解提示;");System.out.println("5-阶乘和幂运算;");System.out.println("6-求解定积分;");System.out.println("7-求排列组合;");System.out.println("8-退出;\n");while(true){System.out.println("请选择需要计算的类型!\n");Scanner input=new Scanner(System.in);double choice = input.nextDouble();if(choice==1){System.out.println("请输入需要计算的两个数!\n");System.out.println("n1=\n");Scanner input1=new Scanner(System.in);double n1 =input1.nextDouble();System.out.println("n2=\n");Scanner input2=new Scanner(System.in);double n2 =input2.nextDouble();arithmetic n= new arithmetic(n1,n2);System.out.println("乘积为:"+n.multiplication(n1,n2));System.out.println("和为:"+n.addition(n1,n2));System.out.println("差为:"+n.subtration(n1,n2));System.out.println("商为:"+n.division(n1,n2));}if(choice==2){System.out.println("请输入需要计算的三角函数!\n");System.out.println("x=");Scanner input3=new Scanner(System.in);double x =input3.nextDouble();TriFun t =new TriFun(x);t.sin();t.cos();t.tan();t.asin();t.acos();t.atan();}if(choice==3){System.out.println("您正在求解一元二次方程ax*x+bx+c=0\n");System.out.println("请输入a,b,c的值:");Scanner input4= new Scanner(System.in);double a= input4.nextDouble();Scanner input5= new Scanner(System.in);double b= input5.nextDouble();Scanner input6= new Scanner(System.in);double c= input6.nextDouble();LinearEquation L= new LinearEquation(a,b,c);L.Answer();}if(choice==4){System.out.println("您正在求解一元三次方程ax*x*x+bx*x+cx+d=0\n");System.out.println("请输入a,b,c,d的值:");Scanner input7= new Scanner(System.in);double a= input7.nextDouble();double b= input7.nextDouble();double c= input7.nextDouble();double d= input7.nextDouble();LinEquation l =new LinEquation(a,b,c,d);l.QiuJie();}if(choice==5){Calu c=new Calu();System.out.println("请问计算阶乘还是幂运算");System.out.println("1-阶乘");System.out.println("2-幂运算");Scanner input8=new Scanner(System.in);double choice1=input8.nextDouble();if(choice1==1){System.out.println("你正在计算 m!,请输入m:");Scanner input9=new Scanner(System.in);double m= input9.nextDouble();c.fact(m);System.out.println(m+"的阶乘为"+c.fact(m)+"\n");}if(choice1==2){System.out.println("你正在计算 m的n次方,请输入m,n:");Scanner input10=new Scanner(System.in);double m=input10.nextDouble();double n=input10.nextDouble();c.intPower(m, n);System.out.println(m+"的"+n+"次方为:"+c.intPower(m, n)+"\n");}}if(choice==6){System.out.println("有以下几种函数可供选择:");System.out.println("1-x*Math.exp(x)");System.out.println("2-x*Math.log(x)");Scanner input13=new Scanner(System.in);double choice2=input13.nextDouble();if(choice2==1){System.out.println("请输入积分上限b,积分下限a(b>a):");Scanner in =new Scanner(System.in);double b = in.nextDouble();double a = in.nextDouble();fxe fxe =new fxe();fxe.go(a,b);}if(choice2==2){System.out.println("请输入积分上限b,积分下限a(b>a):");Scanner in =new Scanner(System.in);double b = in.nextDouble();double a = in.nextDouble();fxsin fxsin =new fxsin();fxsin.go(a,b);}}if(choice==7){System.out.println("请问计算排列还是组合?");System.out.println("1-排列");System.out.println("2-组合");Scanner input11=new Scanner(System.in);double choice3=input11.nextDouble();if(choice3==1){System.out.println("从n中选择k,按照一定的顺序排列:");System.out.println("请输入n,k:");Scanner input12= new Scanner(System.in);int n=input12.nextInt();int k=input12.nextInt();ArrAndCom a = new ArrAndCom(n,k);a.Arr();}elseif(choice3==2){System.out.println("请输入n,k:");Scanner input13= new Scanner(System.in);int n=input13.nextInt();int k=input13.nextInt();ArrAndCom b = new ArrAndCom(n,k);();}}if(choice==8){System.out.println("已退出计算器!");break;}}}}。