首页 > 其他分享 >9.16-17四则运算2

9.16-17四则运算2

时间:2022-09-22 21:34:29浏览次数:54  
标签:String 17 9.16 四则运算 System int static str new

 

package temomomomo;

import java.util.Random;
import java.util.Scanner;

public class sizeyunsuan2 {

    static Scanner in = new Scanner(System.in);//一定要写上static不然报错
    
    static String[] operator1= new String[] {"+","-","x","÷"};
    static String[] operator2=new String[] {"+","-"};
    static String[] a = new String[10000];
    
    static int[] daan=new int[10000];//正确答案
    static int[] da=new int [10000];//输入答案
    
    
    static int num,pri,opp,max,min;//题目数、打印方式、操作数、最大值、最小值
    static String ch,kuohao;//是否需要乘除法、括号
//    页面:需求输入
    public static void yemian() {
        System.out.println("输入题目数量:");
        num=in.nextInt();
        System.out.println("打印方式:");
        pri=in.nextInt();
        System.out.println("操作数个数:");
        opp=in.nextInt()-1;
        System.out.println("是否有乘除法(Y/N):");
        ch=in.next();
        System.out.println("是否需要括号(Y/N):");
        kuohao=in.next();
        System.out.println("取值范围:");
        min=in.nextInt();
        max=in.nextInt();
    }
//    生成随机数子方法,k=1数字,k=2操作2个,k=3操作4个,k=4括号随机数
    public static int random(int k){
        Random r=new Random();
        if(k==1) {
            int m=max-min+1;
            int[] numbers=new int [m];
            int j=min;
            for(int i=0;i<m;i++) {
                numbers[i]=j;
                j++;
            }
            return numbers[r.nextInt(m)];
        }
        else if(k==2) {
            return r.nextInt(2);
        }
        else if(k==3){
            return r.nextInt(4);
        }
        else {
            return r.nextInt(opp)+1;
        }
    }
//    生成并打印
    public static void shengcheng() {
        int n=0;
        for(int i=0;i<num;i++) {
            String str="";
            int[] nnum=new int[opp+1];
            if(kuohao.equals("Y")) {
                int weizhi=random(4);
                int find=0;
                for(int k=0;k<opp;k++) {
                    if(weizhi-1==k) {
                        str+="(";
                        find=1;
                        if(ch.equals("N")==true) {
                            str+=String.valueOf(random(1))+operator2[random(2)];
                        }
                        else {
                            str+=String.valueOf(random(1))+operator2[random(2)];
                        }
                    }
                    else {        
                        str+=String.valueOf(random(1));
                        if(find==1) {
                            str+=")";
                            find=0;
                        }
                        if(ch.equals("N")==true) {
                            str+=operator2[random(2)];
                        }
                        
                        else {
                            str+=operator1[random(3)];
                        }
                    }
                }
                str+=String.valueOf(random(1));
                if(find==1) {
                    str+=")";
                }
                str+="=";
            }
            else {
                for(int k=0;k<opp;k++) {
                    if(ch.equals("N")==true) {
                        str+=String.valueOf(random(1))+operator2[random(2)];
                    }
                    else {
                        str+=String.valueOf(random(1))+operator1[random(3)];
                    }
                }
                str+=String.valueOf(random(1))+"=";
            }
            a[n]=str;
            n++;
            System.out.print(str);
            if(n%pri==0)System.out.print("\n");
            else System.out.print("\t");
        }
    }
//    判断是否有重复
    public static void chongfu() {
        int cout=0;
        for(int i=0;i<num-1;i++) {
            for(int j=i+1;j<num;j++) {
                if(a[i].equals(a[j])==true) {
                    cout++;
                }
            }
        }
        System.out.println("题目重复数量:"+cout);
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        yemian();
        shengcheng();
        chongfu();
    }

}

 

不会:<记录一下

package temomomomo;

//import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Random;
import java.util.Scanner;

class sizeyunsuan3 {

    static String[] opString=new String[] {"+","-"};
    static Scanner in = new Scanner(System.in);
    static int num,opnum;
    static String maxString;//999999999999字符串
    static int maxInt;//999999999个数
//    static BigDecimal b;
    static BigInteger b;
//    static float bb;
    static String[] timu=new String[10000];//存放题目下标法
    static String[] daan=new String[10000];//存放正确答案,以String类型存储big转String下标法
    static String[] shuru=new String[10000];//存储输入的答案下标法
    static int[] cuowu1=new int[10000];//存入错误的下标
    static int[] cuowu2=new int[10000];//存入错误次数下标法
    static int err=0;//错题数量
    
    public static void yemian() {
        System.out.println("请输入题目数量:");
        num=in.nextInt();
        System.out.println("请输入操作数:");
        opnum=in.nextInt();
        System.out.println("请输入最大范围 :");
        maxString=in.next();
        b=new BigInteger(maxString);//
//        bb=b.floatValue();//
        maxInt=maxString.length();//没有用
    }
    public static void chuti() {
        
        for(int i=0;i<num;i++) {
            String str="";//记录题目
            BigInteger sum = new BigInteger(64, new Random());//生成第一个随机数256    64:20位??
//            BigDecimal sum=new BigDecimal(Math.random()*bb);
            str+=String.valueOf(sum);//转
            for(int j=0;j<opnum-1;j++) {
                BigInteger a = new BigInteger(64, new Random());
//                BigDecimal a=new BigDecimal(Math.random()*bb);
                int fuhao=(int)(Math.random()*2);//0,1
                switch(fuhao) {
                case 0:str+="+";sum=sum.add(a);break;
                case 1:str+="-";sum=sum.subtract(a);break;
                }
                str+=String.valueOf(a);
            }
            str+="=";
            timu[i]=str;
            daan[i]=String.valueOf(sum);
            System.out.print(str);
            shuru[i]=in.next();
            if(daan[i].equals(shuru[i])==false) {
                cuowu1[err]=i;//cun下标
                cuowu2[cuowu1[err]]++;//存错误次数
                err++;
            }
        }
        System.out.println("正确率:"+(double)(num-err)/num*100+"%");
        System.out.print("1.重做练习题 2.查看错题集");
        int choose;
        choose=in.nextInt();
        switch(choose) {
        case 1:chongzuo();break;
        case 2:cuotiji();break;
        }
    }
    
    public static void chongzuo() {
        int k=0;
        for(int i=0;i<err;i++) {
            System.out.print(timu[cuowu1[i]]);
            shuru[cuowu1[i]]=in.next();
            if(daan[cuowu1[i]].equals(shuru[cuowu1[i]])==false) {
                cuowu2[cuowu1[i]]++;//存错误次数
                k++;
            }
        }
        System.out.println("正确率:"+(double)(err-k)/err*100+"%");
        cuotiji();
    }
    public static void cuotiji() {
//        System.out.println("正确率:"+(double)(num-err)/num*100+"%");
        for(int i=0;i<err;i++) {
            System.out.println(timu[cuowu1[i]]+daan[cuowu1[i]]+"答错"+cuowu2[cuowu1[i]]+"次");
        }
    }
    
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        yemian();
        chuti();
    }

}

 

标签:String,17,9.16,四则运算,System,int,static,str,new
From: https://www.cnblogs.com/hmy22466/p/16720922.html

相关文章

  • CVE-2017-0143(永恒之蓝)漏洞复现By metasploit
    一、永恒之蓝介绍永恒之蓝是在Windows的SMB服务处理SMBv1请求时发生的漏洞,这个漏洞导致攻击者在目标系统上可以执行任意代码。通过永恒之蓝漏洞会扫描开放445文件共享端......
  • ERROR 1776 (HY000): Parameters MASTER_LOG_FILE, MASTER_LOG_POS, RELAY_LOG_FILE a
    问题介绍:主库开始GTID,后来关闭了。做从库用的master_auto_position=1这种方法,然后报以下错误。root@localhost:(none)02:49:31>changemastertomaster_host='56.56.......
  • 1729D解题报告
    这是一题开错的题想法每次两个人去最优(莫名悲伤),其中一个预算大于实际花费,另一个随意理由如下如果两个人去花费超过了预算,此时添加第三个人(他的花费小于预算),那么那个要......
  • OpenSSH安全漏洞 (CVE-2021-41617)漏洞修复
    事件说明:OpenSSH(OpenBSDSecureShell)是Openbsd计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连......
  • PAT (Basic Level) Practice 1017 A除以B 分数 20
    本题要求计算 A/B,其中 A 是不超过1000位的正整数,B 是1位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。输入格式:输入在一行中依次给出 A 和......
  • Polycarp Writes a String from Memory CodeForces - 1702B
    PolycarpWritesaStringfromMemoryCodeForces-1702B给定大小为n的字符串,至多每3种不同的字母分为一组,最少将字符串分为多少组?Input第一行输入数据包含一个整......
  • 网络流 17 题
    A.蜥蜴次数的限制可以用拆点解决,然后直接连边即可。B.OPTM-OptimalMarks把二进制位拆开,套用最小割模型即可。C.HardLife二分答案\(x\),然后对于每条边建立一个......
  • letcode算法--17.字符串相乘
    给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。注意:不能使用任何内置的BigInteger库或直接将输入转......
  • 1733D1&D2解题报告
    1733D1题目大意:给出两个长度为n的01串,每次能选择两个位置进行取反,相邻的位置取反代价为x,不相邻则为y,问让其中一串变成另一串的最小代价初遇想法对于两个串上01不同的......
  • CF1718D Permutation for Burenka【贪心】
    传送门显然,两个数列相似当且仅当它们的笛卡尔树结构相同。那么排列\(p\)给出了\(a\)所对应的笛卡尔树形态,据此我们容易求出树上每个空位上数的取值范围\([l_i,r_i]......