这次的课堂小测是用以前生成的那些四则运算的代码,然后将这些题目写到一个文件中,再通过这个文件读取题目的信息,每读入一个答案的时候,遇到星号的时候,等待用户输入然后判断输入的答案是否正确,然后输出小一道题目让用户输入,直到文件读到结束的位置。

思路大概是如下:

一开始的思路是答案同样也在文本输入,例如1+1=2*;

每次读取到等号的时候,将文件中答案读取出来,并且将变量设置为此值。接下来就能用户输入的答案是否正确了。

//Sizezt.java的代码如下:

package sz;

//import java.io.BufferedReader;
import java.io.File;
//import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
//import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Iterator;
import java.util.Vector; public class Sizezt { //出现运算项的最高个数
private static final int SXSIZE=4;
//出多少道题目
private static final int TIMES=100;
private static Vector<Integer> ve=new Vector<Integer>();
public static Vector<Integer> getVe() {
return ve;
}
public static void setVe(Vector<Integer> ve) {
Sizezt.ve = ve;
}
public static Vector<String> getSe() {
return se;
}
public static void setSe(Vector<String> se) {
Sizezt.se = se;
}
private static Vector<String> se=new Vector<String>();
public static void run() {
// TODO 自动生成的方法存根
ve.clear();
se.clear();
int times=(int)(Math.random()*(SXSIZE-1)+1);
String szM[]=new String[]{"+","-","X","/"};
int numa=0,numb=0,numc=0,numg=0;
String se_c="";
int type=0;
for(int j=0;j<TIMES;j++)
{
boolean g_ok=false;
boolean g_run=false;
boolean g_list=false;
boolean g_xiuzheng=false;
numg=0;
se_c="";
for(int i=0;i<times;i++)
{ if(g_ok&&isOk(numa)||g_ok&&isOk(numc))
{
se_c+="=";
System.out.print("="+"\n");
ve.add(numc);
numc=-2000;
break;
}
if(!g_ok)
{
numa=(int)(Math.random()*600+1);
numb=(int)(Math.random()*600+1);
if(numg==0)
numg=numa;
}
type=!g_list?(int)(Math.random()*4+1):(int)(Math.random()*2+1);
//System.out.print("\t"+type+"\t");
if(type==4)
{
if(!g_ok)
{
while(numa%numb!=0||numb==1)
{
numa=(int)(Math.random()*600+1);
numb=(int)(Math.random()*600+1);
}
numc=numa/numb;
}
else
{
while(numg%numb!=0)
{
numb=(int)(Math.random()*600+1);
}
numc-=g_xiuzheng?-numg:numg;
if(!g_xiuzheng)
numc+=numg/numb;
else numc-=numg/numb; }
g_list=true;
g_run=!g_run;
}
else if(type==3)
{ if(!g_ok)
{
while(numa*numb>1000||numa==1||numb==1)
{
numa=(int)(Math.random()*600+1);
numb=(int)(Math.random()*600+1);
}
numc=numa*numb;
}
else
{
while(numg*numb>1000||numb!=1)
{
numb=(int)(Math.random()*600+1);
}
numc-=g_xiuzheng?numg:numg;
numc+=numg*numb;
}
g_list=true;
} else if(type==2)
{
if(!g_ok)
numc=numa-numb;
else numc-=numb;
g_list=false;
}
else if(type==1)
{
if(!g_ok)
numc=numa+numb;
else numc+=numb;
g_list=false;
} if(!g_ok)
{
System.out.print(numa+szM[type-1]+numb);
se_c+=numa+szM[type-1]+numb;
}
else
{
System.out.print(szM[(type==4&&!g_run)?(int)(Math.random()*2):type-1]+numb);
se_c+=szM[(type==4&&!g_run)?(int)(Math.random()*2):type-1]+numb;
}
g_ok=true;
if(type==2)
g_xiuzheng=true;
else g_xiuzheng=false;
numg=numb;
numb=(int)(Math.random()*600+1);
}
if(numc!=-2000)
{
ve.add(numc);
System.out.print("="+"\r\n");
se_c+="=";
} se.add(se_c);
numc=0;
times=(int)(Math.random()*(SXSIZE-1)+1);
} // Document document = null;
// try {
// document = XmlUtils.getDocument();
// } catch (DocumentException e) {
// // TODO 自动生成的 catch 块
// e.printStackTrace();
// }
// Element root = document.getRootElement();
// Element user_node = root.addElement("sz"); //创建user结点,并挂到root
//
// //user_node.setAttributeValue("ve", ve); }
public static boolean isOk(int num)
{
if(num==1||num<=0||num==2)
return false;
for(int i=2;i<=Math.sqrt(num);i++)
{
if(num%i==0)
return false;
}
return true;
}
public void daochu() throws IOException
{
String st="";
int an=0;
Iterator<String> it;
Iterator<Integer> it1;
File a=new File("timu.txt");
FileOutputStream b = new FileOutputStream(a);
OutputStreamWriter c=new OutputStreamWriter(b,"UTF-8");
it=se.iterator();
it1=ve.iterator();
int i=0;
while(it.hasNext())
{
i++;
if(i!=1)
c.append("\r\n");
st=it.next();
an=it1.next();
c.append(st+an+"*"); }
c.close();
b.close(); }
public static void main(String args[])
{
Sizezt.run();
Sizezt a=new Sizezt();
try {
a.daochu();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
Daoru b=new Daoru();
try {
b.daoru();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
} }

导入类我单独写了一个,方便文件的导入。

//Daoru.java的代码如下所示:

package sz;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.Vector; public class Daoru { Scanner can=new Scanner(System.in);
public boolean isNum(char a)
{
if(a-'0'>=0&&a-'0'<=9)
return true;
return false;
}
public void daoru() throws IOException
{ File a=new File("timu.txt");
FileInputStream b = new FileInputStream(a);
InputStreamReader c=new InputStreamReader(b,"UTF-8");
// {
// BufferedReader bufr =new BufferedReader(c);
// String line = null;
// while((line = bufr.readLine())!=null){
// Student st=new Student();
// String ook[]=line.toUpperCase().split(" ");
// st.set(ook[0],ook[1],ook[2]);
// map.add(st);
// }
// bufr.close();
// //System.out.println(sb.toString());
//
// }
int num=0,count=0,account=0;
Vector<Integer> num1=new Vector<Integer>();
int g_score=0;
boolean g_deng=false,g_xin=true,g_jian=false;
while(c.ready())
{
char sz=(char)c.read();
if(g_xin)
{
++account;
System.out.print("\r\n第"+account+"题目:");
if(account==1)
{
System.out.print("\r\n");
}
g_xin=false;
}
if(isNum(sz)&&g_deng)
{ num1.add((int)(sz-'0'));
count++;
}
else if(sz=='=')
{
num1.clear();
num=0;
count=0;
g_deng=true;
System.out.print(sz);
}
else if(sz=='*')
{
for(int i=num1.size()-1;i>=0;i--)
{
num+=num1.get(num1.size()-1-i)*Math.pow(10, i);
} if(g_jian)
num=-num;
//System.out.print(num);
num1.clear();
g_deng=false;
g_xin=true;
g_jian=false; boolean g_down=true;
while(g_down)
{
if(can.hasNextInt())
{ int daan=can.nextInt(); if(daan==num)
{
g_score++;
}
g_down=false;
}
else
{
can.next();
System.out.println("\r\n格式错误,请重新输入");
}
}
num=0;
count=0;
}
else if(sz=='-'&&g_deng)
{
g_jian=true; }
else
{
System.out.print(sz);
}
}
c.close();
b.close();
System.out.println("\r\n你最终的得分是:"+g_score);
} }

生成的size.txt文件如下所示

实验的截图如下:

此次的实验大概就是如此

最新文章

  1. Java 根据经纬度计算两点之间的距离
  2. MS SQL 排序规则总结
  3. 回归分析法&amp;一元线性回归操作和解释
  4. spring事务学习(转账案例)(一)
  5. 第七篇、OC_图片的裁剪基于SDWebImage
  6. MySQL高效分页解决方案集
  7. [Swustoj 24] Max Area
  8. excel取值
  9. iOS开发基本须要
  10. spring来源理解-BeanFactory子类XmlBeanFactory创建过程
  11. Android项目--浅析系统通讯录中的那些方法
  12. Scala 中的隐式转换和隐式参数
  13. idea 找不到classpath 为resource下的xml
  14. Codeforces Round #501 (Div. 3) D. Walking Between Houses
  15. jqGrid选择列控件向右拖拽超出边界处理
  16. axios封装get方法和post方法
  17. [BJOI2017]开车
  18. Echars折线配置详解
  19. (string find) 亲和串 hdu2203
  20. Spark进阶之路-日志服务器的配置

热门文章

  1. pocket API学习笔记
  2. python基础一 day6 文件操作
  3. python基础一 day3 列表
  4. Promise 理解与使用
  5. QT+模态对话框与非模态对话框
  6. Piston Pump Manufacturers - Mobile Cartridge Piston Pump: Advantages
  7. 2018美赛准备之路——Matlab基础——命令行功能函数
  8. PHP 安装完成后 增加 bcmath 模块
  9. 剑指Offer(书):用两个栈实现队列
  10. 《C++专项练习》 — (2)