java 随机产生计算题_Java编写一个随机产生小学生四则运算题30道

//注:这个程序还没有实现的地方为分数的计算方法未能实现,只是简单的两个数运算,没有实现多个数,四则运算中的数没有涉及0.

package 课堂测试1;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Random;

public class Arithmetic {

String f()

{

int i=(int)(1+Math.random()*100);

int j=(int)(1+Math.random()*100);

if(i>=j)

{

int temp=i;

i=j;

j=temp;

}

return("("+i+"/"+j+")");

}//Math.random()是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值

/*

* Java中Math类的random()方法可以生成[0,1)之间的随机浮点数。而double类型数据强制转换成int类型,整数部分赋值给int类型变量,小数点之后的小数部分将会丢失。如果要生成[0,n]的随机整数的话,只需要Math.random()乘以n+1,生成[0,n+1)的浮点数,再强制类型转换为int类型,只取其整数部分,即可得到[0,n]的整数。

int b=(int)(Math.random()*10);//生成[0,9]之间的随机整数。

int temp=m+(int)(Math.random()*(n+1-m)); //生成从m到n的随机整数[m,n]

int num = (int)(Math.random()*2+1)

//以上代码即设置一个随机1到3(取不到3)的变量num。

//产生一个[0,1)之间的随机数。

Math.random():

返回指定范围的随机数(m-n之间)的公式:

Math.random()*(n-m)+m;

或者

Math.random()*(n+1-m)+m*/

public static void main(String[] args)

{

try {

File file=new File("E:\\result.txt");

if(file.exists()) {file.delete();}

FileWriter fw=new FileWriter(file,true);

PrintWriter pw=new PrintWriter(fw);

//PrintWriter()的作用是为了定义流输出的位置,并且此流可以正常的存储中文,减少乱码输出。

//备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。

double result;

String a,b;

Arithmetic lianxi=new Arithmetic();

for(int n=0;n<30;n++)

{System.out.println("第"+(n+1)+"道");

a=lianxi.f();

b=lianxi.f();

int i=(int)(1+Math.random()*100);

int j=(int)(1+Math.random()*100);

double i1=i;

double j1=j;

String[]operator={"+","-","*","/"};

Random r=new Random();

int num=r.nextInt(4);//该方法的作用是生成一个随机的int值,该值介于[0,4)的区间,也就是0到4之间的随机int值,包含0而不包含4

int t=(int)(Math.random()*3);//分为三种情况,两个整数运算,一个整数一个分数运算,两个分数运算

//两个整数运算

if(t==0) {

if(operator[num]=="/") {

if(j==0) {

while(j==0)

j= (int)(Math.random()*100);

}//考虑除数是否为0的情况,不过用在这边没有意义,这里的j不可能为0

}

String str1=i+operator[num]+j;

if(operator[num]=="+") {result=i+j;

System.out.println(str1+"=");

pw.println(str1+"="+result);//保存到文件中去

}

else if(operator[num]=="-") {

result=i-j;

System.out.println(str1+"=");

pw.println(str1+"="+result);

}

else if(operator[num]=="*") {

result=i*j;

System.out.println(str1+"=");

pw.println(str1+"="+result);

}

else if(operator[num]=="/") {

result=i1/j1;

System.out.println(str1+"=");

pw.println(str1+"="+result);

}

}

//一个整数一个分数运算

else if(t==1) {

if(operator[num]=="/") {

if(j==0) {

while(j==0)

j= (int)(Math.random()*100);

}

}

String str2=a+operator[num]+j;

if(operator[num]=="+") {

System.out.println(str2+"=");

pw.println(str2+"=");

}

if(operator[num]=="-") {

System.out.println(str2+"=");

pw.println(str2+"=");

}

if(operator[num]=="*") {

System.out.println(str2+"=");

pw.println(str2+"=");

}

if(operator[num]=="/") {

System.out.println(str2+"=");

pw.println(str2+"=");

}

}

//两个分数运算

else if(t==2) {

String str3=a+operator[num]+b;

if(operator[num]=="+") {

System.out.println(str3+"=");

pw.println(str3+"=");

}

if(operator[num]=="-") {

System.out.println(str3+"=");

pw.println(str3+"=");

}

if(operator[num]=="*") {

System.out.println(str3+"=");

pw.println(str3+"=");

}

if(operator[num]=="/") {

System.out.println(str3+"=");

pw.println(str3+"=");

}

}

}

pw.flush();

pw.close();

fw.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}

/*参考链接

https://blog.csdn.net/qq_36868342/article/details/73478112

https://blog.csdn.net/qq_21808961/article/details/79931087

https://www.cnblogs.com/xiaotiaosi/p/6394147.html

https://zhidao.baidu.com/question/417476227.html?word=printwriter&ms=1&rid=9823837345489847717

https://blog.csdn.net/duncandavid/article/details/60871080

*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值