zoukankan      html  css  js  c++  java
  • 将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("
    ");
            // 换行
                 
            }
                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();
       }
    
    
    }
  • 相关阅读:
    超强、超详细Redis数据库入门教程
    性能测试学习线路图(建议)
    性能测试分析软件汇总–开源、商业全部收集
    基于Locust、Tsung的百万并发秒杀压测案例[转]
    brew update失败提示:/System/Library/Frameworks/Ruby.framework/。。。解决方法
    XML特殊符号
    tsuang简易教程-MAC版
    【转】SQL Server获取日期或时间
    autoIT 传参数含引号
    Autoit 脚本以及 Java 调用
  • 原文地址:https://www.cnblogs.com/990906lhc/p/9966315.html
Copyright © 2011-2022 走看看