此系列文章收录大量Java经典代码题(也可以算是leetcode刷题指南),剩余文章指路Java题集。希望可以与大家一起探索Java的神秘。3、2、1,请看!
本篇文章将带大家编写一个简易算术计算器。=
功能:将几个算术功能组织为菜单形式供客户选择,菜单栏如下:
1.建立菜单
首先我们需要显示菜单供用户选择
//显示菜单
System.out.println("***请按编号选择使用哪个功能***");
System.out.println("1.判断某数是否为素数");
System.out.println("2.获取亲密数");
System.out.println("3.算术练习器");
System.out.println("4.求两数最大公约数和最小公倍数");
System.out.println("0.退出");
菜单就这样完成啦,接下来需要完善每一个功能。为实现这样那样的选择功能,我们可以选择switch结构,并且调用方法执行对应功能。
2.功能一——判断素数
判断一个数是否为素数,可能我们一开始接触的方法都是从2一直遍历到n-1,一个数因子必然成对,利用这个性质可以直接由2遍历至n的开根,从而可以简化程序具体情形可以看下面的代码或文章Java题集1
//case 1
public static boolean isPrime(int n)
{
if(n==1)
return false;
for(int i=2;i<=Math.sqrt(n);i++)
{
if(n%i==0)
return false;
}
return true;
}
3.功能二——获取亲密数
亲密数:如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。
可以直接求A的因子之和B,然后判断是否是A的亲密数
//case 2
public static void close(int m)
{
int a,b=1,temp=1,k=0;
for(a=2;a<m;a++)
{
b=1;
for(int i=2;i<Math.sqrt(a);i++){
if(a%i==0)
b=b+i+a/i;
}
if(a<b)
{
temp=1;
for(int i=2;i<Math.sqrt(b);i++)
if(b%i==0)
{
temp=temp+i+b/i;
}
}
if(a==temp)
{
System.out.println(a+"和"+b+"是亲密数");
k++;
}
}
if(k==0)
System.out.println(m+"内没有亲密数");
else{
System.out.println("有"+k+"对亲密数");
}
}
4.功能三——算术练习器
随机生成算术题,然后由用户输入自己的答案,并判断答案是否正确。
//case 3
public static void exercise(int x)
{
int m,n,rein,reca=0,cr=0,cw=0,op;//rein:用户输入数字,reca:正确答案,cr:正确题目数量,cw:错题数
do {
do {
//随机生成两个两位数
m=(int)(Math.random()*100);
n=(int)(Math.random()*100);
} while (m<=10||n<=10);
op=(int)(Math.random()*4);//生成0~3的数字,0:加法;1:减法;2:乘法;3:除法
switch (op) {
case 0:
System.out.println(m+"+"+n+"=");
reca=m+n;
break;
case 1:
System.out.println(m+"-"+n+"=");
reca=m-n;
break;
case 2:
System.out.println(m+"*"+n+"=");
reca=m*n;
break;
case 3:
System.out.println(m+"/"+n+"=");
reca=m/n;
break;
default:
break;
}
Scanner scn=new Scanner(System.in);
System.out.println("请输入你的答案");
rein=scn.nextInt();
if(rein==reca)
{
System.out.println("计算正确");
cr++;
}
else{
System.out.println("计算错误,答案是:"+reca);
cw++;
}
} while ((cr+cw)<x);
System.out.println("你做对了"+cr+"道题");
System.out.println("你做错了"+cw+"道题");
}
5.功能四——求两数最大公约数和最小公倍数
使用辗转相除法求得最大公约数,再根据最大公约数和最小公倍数之间的关系求得最小公倍数
//case 4
public static void gysgbs()
{
Scanner scn=new Scanner(System.in);
int m,n,r=0;
System.out.println("请输入两个数");
do {
m=scn.nextInt();
n=scn.nextInt();
} while (m<=0||n<=0);
int s=m*n;
r=m%n;
while(r!=0)
{
m=n;
n=r;
r=m%n;
}
System.out.println("最大公约数是:"+n);
System.out.println("最大公倍数是:"+(s/n));
}
关于各个功能的方法就写好了,最后将其用switch结构进行整合,使程序运行起来。
这篇文章到此结束,源码已经放在资源区了,大家可以前往查看。感谢各位的阅读和所提出的宝贵意见,大家也可以试着自己动手编写代码。如果觉得这篇文章写的还可以或者对您有帮助,麻烦点赞收藏加转发!!!