将100道计算题输出至txt文件,再读取文件至控制台,在控制台中输入答案并评判对错

我在课堂上基本完成了输出100道题和创建文档,但是因为对输入输出流不熟悉,所以并没有实现将输出的计算题导出到文档里,在课下我又请教了宿舍的大佬,基本完成如下:

源代码:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class four1 {
static    int []sum = new int[100];
    
    public void input() throws IOException
{
        int  nummin, nummax;
        String str1;
        String str2;
        char []ch= {'+','-','*','/'};
        int cha;

        File f = new File("C:/D/log.txt");
        FileOutputStream fop = new FileOutputStream(f);
        // 构建FileOutputStream对象,文件不存在会自动新建
 
        OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
        // 构建OutputStreamWriter对象,参数可以指定编码,默认为操作系统默认编码,windows上是gbk

        
        for(int i=0;i<100;i++)
        {
            nummax=(int)(Math.random()*1000);
            nummin=(int)(Math.random()*1000);

            cha=(int)(Math.random()*4);
             if(ch[cha]=='+'||ch[cha]=='-')
             {
                 if(ch[cha]=='+')
                     sum[i]=nummax+nummin;
                 else
                     sum[i]=nummax-nummin;
                 str1=Integer.toString(nummax);
                 str2=Integer.toString(nummin);
                 writer.append(str1);
                 writer.append(ch[cha]);
                 writer.append(str2);
                 writer.append("=");
            }
             else if(ch[cha]=='*')
             {
                 sum[i]=nummax*nummin;
                 nummax=(int)(Math.random()*100);
                 nummin=(int)(Math.random()*100);
                str1=Integer.toString(nummax);
                str2=Integer.toString(nummin);
                writer.append(str1);
                writer.append(ch[cha]);
                writer.append(str2);
                writer.append("=");
             }
             else if(ch[cha]=='/')
             {
                 nummin=(int)(Math.random()*10)+1;
                 while(nummax%nummin!=0)
                 {
                 nummax=(int)(Math.random()*1000);
                 nummin=(int)(Math.random()*10)+1;
                 }
                 sum[i]=nummax/nummin;
                str1=Integer.toString(nummax);
                str2=Integer.toString(nummin);
                writer.append(str1);
                writer.append(ch[cha]);
                writer.append(str2);
                writer.append("=");
             }


        // 写入到缓冲区
 
             writer.append("\r\n");
        // 换行
             
        }
            writer.close();
        
        // 刷新缓存冲,写入到文件,如果下面已经没有写入的内容了,直接close也会写入

        // 关闭写入流,同时会把缓冲区内容写入文件,所以上面的注释掉
        

        fop.close();
        // 关闭输出流,释放系统资源
 
        FileInputStream fip = new FileInputStream(f);
        // 构建FileInputStream对象
 
        InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
        // 构建InputStreamReader对象,编码与写入相同
 
        StringBuffer sb = new StringBuffer();
        while (reader.ready()) {
            sb.append((char) reader.read());
            // 转成char加到StringBuffer对象中
        }
        
        reader.close();
        // 关闭读取流
 
        fip.close();
        // 关闭输入流,释放系统资源

    }



}
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;


public class four2 {
     public void name()throws Exception
        {
                String in=in("C:/D/log.txt");
                System.out.println(in);
        }
        private String in(String file) throws IOException {
            // TODO Auto-generated method stub
            int num;

            @SuppressWarnings("resource")
            Scanner in=new Scanner(System.in);
            File f=new File(file);
            @SuppressWarnings("resource")
            BufferedReader bf=new BufferedReader(new FileReader(f));
            String content="";
            for(int i=0;i<100;i++)
            {
                content=bf.readLine();
                System.out.println(content);
                num=in.nextInt();
                if(num==four1.sum[i])
                    System.out.println("对");
                else 
                    System.out.println("不对");
            }

            
            return null;
        }


}
import java.util.Scanner;

public class mian {
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
       @SuppressWarnings({ "unused", "resource" })
    Scanner in=new Scanner(System.in);
       four1 f1=new four1();
       f1.input();
       four2 f2=new four2();
       f2.name();
   }


}

猜你喜欢

转载自www.cnblogs.com/990906lhc/p/9966315.html