小学20以内加减法_自动生成器

这篇具有很好参考价值的文章主要介绍了小学20以内加减法_自动生成器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

package com;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test4_36Arithmetics {

	//定义两个变量表示背景图的宽高
    static   int bgWidth=1000;
    static   int bgHeight=900;

    //主函数: 让作用是程序能运行
    public static void main(String[] args) {

        JFrame         win  =new     JFrame();
        Content4          jp=new Content4();
        jp.setLayout(null);
        
        win.add(jp);

        win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        win.setSize(bgWidth,bgHeight);
        win.setVisible( true );//用win变量调用setVisiable()函数让窗口显示
       // win.setLocationRelativeTo(null);//让win代表的窗口居中
    }

}




/**自定义一个类Content4继承JPanel充当面板类*/
class Content4 extends JPanel{
	
	public void paint(Graphics g) {
		g.setColor(Color.white);
		g.fillRect(0, 0, Test2.bgWidth, Test2.bgHeight);
		
		paintTwoNum_arithmetics(g);
		paintThreeNum_arithmetics(g);
		paintThourNum_arithmetics(g);
	}

	
	int i=1;
	int twoNumArithmetics_count=10;
	/**1.绘制两个数字的加减法*/
	private void paintTwoNum_arithmetics(Graphics g) {
		i=1;//为了避免java swing界面技术的bug,将i两次赋值为1
		Font f=new Font("黑体",Font.BOLD,25);
		g.setFont(f);
		g.setColor(Color.BLACK);
		
		//1.生成两个数字的加减法
		List<String> list=generate_twoNum_Arithmetics();
		
		int x=20;
		
		g.setColor(Color.BLACK);
		for(;i<=twoNumArithmetics_count;i++){
			g.drawString(list.get(i-1), x, 35*i);
		}

	}
	
	
	int threeNum_arithmetics=10;
	/**2.绘制三个数字的加减法*/
	private void paintThreeNum_arithmetics(Graphics g) {
		i=twoNumArithmetics_count+1;//为了避免java swing界面技术的bug,将i手动赋值为11
		Font f=new Font("黑体",Font.BOLD,25);
		g.setFont(f);
		g.setColor(Color.BLACK);
		
		int x=20;
		
		//2.生成三个数字的加减法
		List<String> list2=generate_ThreeNum_Arithmetics();
		for(int j=0;j<10;j++){
			g.drawString(list2.get(j), x, 35*i);
			i++;
			if(i>=19){
				i=1;
				x=300;
			}
			System.out.println("for::"+i);
		}
		System.out.println(i);
	}
	
	
	
	/**3.绘制四个数字的加减法*/
	private void paintThourNum_arithmetics(Graphics g) {
		i=(threeNum_arithmetics+twoNumArithmetics_count)%18+1;
		int x=20;
		if(threeNum_arithmetics+twoNumArithmetics_count>18){
			x=(threeNum_arithmetics+twoNumArithmetics_count)/18 *300;
		}
		//3.生成四个数字的加减法
		List<String> list3=genetateThourNum_arithmetics();
		for(int j=0;j<16;j++){
			if(i>=19){
				i=1;
				x=300;
			}
			g.drawString(list3.get(j), x, 35*i);
//			System.out.println(40*i +",aaa,"+list2.get(j));
			i++;
		}
	}
	
	/**为了对齐显示, 将小于10的数前边补0*/
	private String[] number_addZero(int[] numbers){
		String[] str_numbers=new String[numbers.length];
		for(int i=0;i<numbers.length; i++){
			if(numbers[i]<10){
				str_numbers[i]="0"+numbers[i];
			}else{
				str_numbers[i]=""+numbers[i];
			}
		}
		return str_numbers;
	}

	
	/**生成一个两个数字的加减法算式(结果是20以内的进位借位的两个数字的加减法),例如 8+9=*/
	List<String> generate_twoNum_Arithmetics(){
		String[] tOperator={"+", "-"};
		ArrayList<String> list=new ArrayList<String>();
		String aOperator="";
		String arithmetic="";
		for(int i=1;i<=40;i++){
			int num1=(int)(Math.random()*20)+4;
			int num2=(int)(Math.random()*11)+3;
			aOperator=tOperator[i%2];
			int ge1=num1%10;
			int ge2=num2%10;
			int[] nums={num1,num2};
			String[] str_numbers=number_addZero(nums);
			if((aOperator).equals("+")){
				arithmetic=str_numbers[0]+"+"+str_numbers[1]+"=";
				while(  9>(num1+num2) || (num1+num2)>20 ||  list.contains(arithmetic)  ||  (ge1+ge2)<=10 ){
					num1=(int)(Math.random()*20)+4;
					num2=(int)(Math.random()*11)+3;
					ge1=num1%10;
					ge2=num2%10;
					nums=new int[]{num1,num2};
					str_numbers=number_addZero(nums);
					arithmetic=    str_numbers[0]+"+"+str_numbers[1]+"="  ;
					
				}
			}else if((aOperator).equals("-")){
				arithmetic=str_numbers[0]+"-"+str_numbers[1]+"=";
				while(   num1<num2 || (num1-num2)<8  || (num1-num2)>11 || ge1>=ge2 || list.contains(arithmetic)){
					num1=(int)(Math.random()*20)+4;
					num2=(int)(Math.random()*11)+3;
					ge1=num1%10;
					ge2=num2%10;
					nums=new int[]{num1,num2};
					str_numbers=number_addZero(nums);
					arithmetic=  str_numbers[0]+"-"+str_numbers[1]+"=";
				}
			}
			list.add(arithmetic);
			
		}
		return list;
	}
	
	
	
	
	/**生成三个数字的加减法,例如4+8+2=*/
	List<String> generate_ThreeNum_Arithmetics(){
		String[] tOpe={"+", "-"};
		ArrayList<String> list=new ArrayList<String>();
		String aOpe="",bOpe="";
		String arithmetic="";
		for(int i=1;i<=10;i++){
			
			int num1=(int)(Math.random()*13)+1;
			int num2=(int)(Math.random()*10)+1;
			int num3=(int)(Math.random()*10)+5;
			int index=(int)(Math.random()*2);
			aOpe=tOpe[index];
			index=(int)(Math.random()*2);
			bOpe=tOpe[index];
			
			int[] nums={num1,num2,num3};
			String[] str_numbers=number_addZero(nums);
			
			int ge1=num1%10;
			int ge2=num2%10;
			if((aOpe).equals("+")){
				arithmetic=str_numbers[0]+"+"+str_numbers[1]+bOpe+str_numbers[2]+"=";
				int rs=100;
				if(bOpe.equals("-")){
					rs=num1+num2-num3;
				}else{
					rs=num1+num2+num3;
				}
				while(  9>(num1+num2) || (num1+num2)>16 ||  list.contains(arithmetic)  ||  (ge1+ge2)<=8 || rs<=0 ){
					num1=(int)(Math.random()*20)+4;
					num2=(int)(Math.random()*11)+3;
					num3=(int)(Math.random()*11)+3;
					ge1=num1%10;
					ge2=num2%10;
					
					if(bOpe.equals("-")){
						rs=num1+num2-num3;
					}else{
						rs=num1+num2+num3;
					}
					nums=new int[]{num1,num2,num3};
					str_numbers=number_addZero(nums);
					arithmetic=str_numbers[0]+"+"+str_numbers[1]+bOpe+str_numbers[2]+"=";
				}
				
			}else if((aOpe).equals("-")){
				int rs=num1-num2;
				arithmetic=str_numbers[0]+"-"+str_numbers[1]+bOpe+str_numbers[2]+"=";
				if("-".equals(bOpe)){
					rs=num1-num2-num3;
				}else{
					rs=num1-num2+num3;
				}
				while(   num1<num2 || rs<8  || rs>11 || ge1>ge2 || list.contains(arithmetic) ||rs<=0){
					num1=(int)(Math.random()*20)+4;
					num2=(int)(Math.random()*11)+3;
					num3=(int)(Math.random()*10)+5;
					rs=num1-num2;
					ge1=num1%10;
					ge2=num2%10;
					if("-".equals(bOpe)){
						rs=num1-num2-num3;
					}else{
						rs=num1-num2+num3;
					}
					nums=new int[]{num1,num2,num3};
					str_numbers=number_addZero(nums);
					arithmetic=str_numbers[0]+"+"+str_numbers[1]+bOpe+str_numbers[2]+"=";
				}
				
			}
			list.add(arithmetic);
		}
		return list;
	}
	
	
	
	
	
	/**生成四个数字的加减法: 生成一个已知算式 且结果等于另一个算式(此算式某个数是未知数), 例如 4+5=6+( )*/
	private List<String> genetateThourNum_arithmetics() {
		String[] tOpe={"=", "o"};
		ArrayList<String> list=new ArrayList<String>();
		String aOpe="";
		String arithmetic="";
		for(int i=1;i<=100;i++){
			
			int num1=(int)(Math.random()*20)+4;
			int num2=(int)(Math.random()*11)+3;
			String number1="",number2="", number3="";
			aOpe=tOpe[i%2];
			int ge1=num1%10;
			int ge2=num2%10;
			
			int ranNum=(int)(Math.random()*4+1);
			if((aOpe).equals("=")){
				arithmetic=generate_twoNum_oneArithmetic();
				String[] numbers=arithmetic.split("[+-]");
				String[] numbers2=numbers[1].split("=");
				int n1=Integer.parseInt(numbers[0]);
				int n2=Integer.parseInt(numbers2[0]);
				ranNum=1;
				if(ranNum==1){
					int n3=n1+n2-(int)((Math.random()*(n1+n2-1))+1);
					
					while(n3==n1 || n3==n2){
						n3=n1+n2-(int)((Math.random()*(n1+n2-1))+1);					
					}
					
					int[] nums=new int[]{n1, n2, n3};
					String[] str_numbers=number_addZero(nums);
					list.add(str_numbers[0]+"+"+str_numbers[1]+"="+str_numbers[2]+"+( )");
				}else if(ranNum==2){
					int n3=n1+n2-(int)((Math.random()*12)+1);
					
					while(n3==n1 || n3==n2 || n3==0){
						n3=n1+n2-(int)((Math.random()*(n1+n2))+1);					
					}
					int[] nums=new int[]{n1, n2, n3};
					String[] str_numbers=number_addZero(nums);
					list.add(str_numbers[0]+"+"+str_numbers[1]+"="+str_numbers[2]+"-( )");
					System.out.println(n1+"+"+n2+"="+n3+"-( )");
				}else if(ranNum==3){
					int rs=num1-num2;
					arithmetic=number1+"-"+number2+"=";
					while(   num1<num2 || rs<8  || rs>11 || ge1>ge2 || list.contains(arithmetic)){
						num1=(int)(Math.random()*20)+4;
						num2=(int)(Math.random()*11)+3;
						rs=num1-num2;
						ge1=num1%10;
						ge2=num2%10;
					}
					int num3=num1-num2-(int)((Math.random()*(num1-num2))+1);
					while(num3==0 || num3==num1 || num3==num2){
						 num3=num1-num2-(int)((Math.random()*(num1-num2))+1);
					}
					int[] nums=new int[]{num1, num2, num3};
					String[] str_numbers=number_addZero(nums);
					list.add(str_numbers[0]+"-"+str_numbers[1]+"="+str_numbers[2]+"+( )");
					System.out.println(number1+"-"+number2+"="+number3+"+ ( )");
				}else if(ranNum==4){
					int rs=num1-num2;
					while(   num1<num2 || rs<8  || rs>11 || ge1>ge2 || list.contains(arithmetic)){
						num1=(int)(Math.random()*20)+4;
						num2=(int)(Math.random()*11)+3;
						rs=num1-num2;
						ge1=num1%10;
						ge2=num2%10;
					}
					int num4=(int)((Math.random()*(num1-num2))+1);
					int num3=num1-num2+num4;
					int[] nums=new int[]{num1, num2, num3};
					String[] str_numbers=number_addZero(nums);
					list.add(str_numbers[0]+"-"+str_numbers[1]+"="+str_numbers[2]+"+( )");
					System.out.println(number1+"-"+number2+"="+number3+"- ( )");
				}
				
				
			}else if((aOpe).equals("o")){
				String a_arithmetic=generate_twoNum_oneArithmetic();
				String[] arithmetic_equals1=a_arithmetic.split("=");
				String b_arithmetic=generate_twoNum_oneArithmetic();
				String[] arithmetic_equals2=b_arithmetic.split("=");
				list.add(arithmetic_equals1[0]+"〇"+arithmetic_equals2[0]);
			}
			
			
		}
		return list;
	}
	
	/**用于生成两道加减法算式*/
	public String generate_twoNum_oneArithmetic(){
		String[] tOpe={"+", "-"};
		ArrayList<String> list=new ArrayList<String>();
		String aOpe="";
		String arithmetic="";
		int num1=(int)(Math.random()*20)+4;
		int num2=(int)(Math.random()*11)+3;
		int index=(int)(Math.random()*2);
		aOpe=tOpe[index];
		int ge1=num1%10;
		int ge2=num2%10;
		int[] nums=new int[]{num1, num2};
		String[] str_numbers=number_addZero(nums);
		
		if((aOpe).equals("+")){
			arithmetic=str_numbers[0]+"+"+str_numbers[1]+"=";
			
			while(  9>(num1+num2) || (num1+num2)>19 ||  list.contains(arithmetic)  ||  (ge1+ge2)<=10 ){
				num1=(int)(Math.random()*20)+4;
				num2=(int)(Math.random()*11)+3;
				ge1=num1%10;
				ge2=num2%10;
				nums=new int[]{num1, num2};
				str_numbers=number_addZero(nums);
				arithmetic=str_numbers[0]+"+"+str_numbers[1]+"=";
				
			}
			
			list.add(arithmetic);
			
			
		}else if((aOpe).equals("-")){
			int rs=num1-num2;
			arithmetic=str_numbers[0]+"-"+str_numbers[1]+"=";
			while(   num1<num2 || rs<8  || rs>15 || ge1>ge2 || list.contains(arithmetic)){
				num1=(int)(Math.random()*20)+4;
				num2=(int)(Math.random()*11)+3;
				rs=num1-num2;
				ge1=num1%10;
				ge2=num2%10;
				nums=new int[]{num1, num2};
				str_numbers=number_addZero(nums);
				arithmetic=str_numbers[0]+"-"+str_numbers[1]+"=";
			}
			list.add(arithmetic);
			
			
		}
		return arithmetic;
	}
	
	
	
	
	
}

package com;


import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class Test4_36Arithmetics {


	//定义两个变量表示背景图的宽高
    static   int bgWidth=1000;
    static   int bgHeight=900;


    //主函数: 让作用是程序能运行
    public static void main(String[] args) {


        JFrame         win  =new     JFrame();
        Content4          jp=new Content4();
        jp.setLayout(null);
        
        win.add(jp);


        win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        win.setSize(bgWidth,bgHeight);
        win.setVisible( true );//用win变量调用setVisiable()函数让窗口显示
       // win.setLocationRelativeTo(null);//让win代表的窗口居中
    }


}








/**自定义一个类Content4继承JPanel充当面板类*/
class Content4 extends JPanel{
	
	public void paint(Graphics g) {
		g.setColor(Color.white);
		g.fillRect(0, 0, Test2.bgWidth, Test2.bgHeight);
		
		paintTwoNum_arithmetics(g);
		paintThreeNum_arithmetics(g);
		paintThourNum_arithmetics(g);
	}


	
	int i=1;
	int twoNumArithmetics_count=10;
	/**1.绘制两个数字的加减法*/
	private void paintTwoNum_arithmetics(Graphics g) {
		i=1;//为了避免java swing界面技术的bug,将i两次赋值为1
		Font f=new Font("黑体",Font.BOLD,25);
		g.setFont(f);
		g.setColor(Color.BLACK);
		
		//1.生成两个数字的加减法
		List<String> list=generate_twoNum_Arithmetics();
		
		int x=20;
		
		g.setColor(Color.BLACK);
		for(;i<=twoNumArithmetics_count;i++){
			g.drawString(list.get(i-1), x, 35*i);
		}


	}
	
	
	int threeNum_arithmetics=10;
	/**2.绘制三个数字的加减法*/
	private void paintThreeNum_arithmetics(Graphics g) {
		i=twoNumArithmetics_count+1;//为了避免java swing界面技术的bug,将i手动赋值为11
		Font f=new Font("黑体",Font.BOLD,25);
		g.setFont(f);
		g.setColor(Color.BLACK);
		
		int x=20;
		
		//2.生成三个数字的加减法
		List<String> list2=generate_ThreeNum_Arithmetics();
		for(int j=0;j<10;j++){
			g.drawString(list2.get(j), x, 35*i);
			i++;
			if(i>=19){
				i=1;
				x=300;
			}
			System.out.println("for::"+i);
		}
		System.out.println(i);
	}
	
	
	
	/**3.绘制四个数字的加减法*/
	private void paintThourNum_arithmetics(Graphics g) {
		i=(threeNum_arithmetics+twoNumArithmetics_count)%18+1;
		int x=20;
		if(threeNum_arithmetics+twoNumArithmetics_count>18){
			x=(threeNum_arithmetics+twoNumArithmetics_count)/18 *300;
		}
		//3.生成四个数字的加减法
		List<String> list3=genetateThourNum_arithmetics();
		for(int j=0;j<16;j++){
			if(i>=19){
				i=1;
				x=300;
			}
			g.drawString(list3.get(j), x, 35*i);
//			System.out.println(40*i +",aaa,"+list2.get(j));
			i++;
		}
	}
	
	/**为了对齐显示, 将小于10的数前边补0*/
	private String[] number_addZero(int[] numbers){
		String[] str_numbers=new String[numbers.length];
		for(int i=0;i<numbers.length; i++){
			if(numbers[i]<10){
				str_numbers[i]="0"+numbers[i];
			}else{
				str_numbers[i]=""+numbers[i];
			}
		}
		return str_numbers;
	}


	
	/**生成一个两个数字的加减法算式(结果是20以内的进位借位的两个数字的加减法),例如 8+9=*/
	List<String> generate_twoNum_Arithmetics(){
		String[] tOperator={"+", "-"};
		ArrayList<String> list=new ArrayList<String>();
		String aOperator="";
		String arithmetic="";
		for(int i=1;i<=40;i++){
			int num1=(int)(Math.random()*20)+4;
			int num2=(int)(Math.random()*11)+3;
			aOperator=tOperator[i%2];
			int ge1=num1%10;
			int ge2=num2%10;
			int[] nums={num1,num2};
			String[] str_numbers=number_addZero(nums);
			if((aOperator).equals("+")){
				arithmetic=str_numbers[0]+"+"+str_numbers[1]+"=";
				while(  9>(num1+num2) || (num1+num2)>20 ||  list.contains(arithmetic)  ||  (ge1+ge2)<=10 ){
					num1=(int)(Math.random()*20)+4;
					num2=(int)(Math.random()*11)+3;
					ge1=num1%10;
					ge2=num2%10;
					nums=new int[]{num1,num2};
					str_numbers=number_addZero(nums);
					arithmetic=    str_numbers[0]+"+"+str_numbers[1]+"="  ;
					
				}
			}else if((aOperator).equals("-")){
				arithmetic=str_numbers[0]+"-"+str_numbers[1]+"=";
				while(   num1<num2 || (num1-num2)<8  || (num1-num2)>11 || ge1>=ge2 || list.contains(arithmetic)){
					num1=(int)(Math.random()*20)+4;
					num2=(int)(Math.random()*11)+3;
					ge1=num1%10;
					ge2=num2%10;
					nums=new int[]{num1,num2};
					str_numbers=number_addZero(nums);
					arithmetic=  str_numbers[0]+"-"+str_numbers[1]+"=";
				}
			}
			list.add(arithmetic);
			
		}
		return list;
	}
	
	
	
	
	/**生成三个数字的加减法,例如4+8+2=*/
	List<String> generate_ThreeNum_Arithmetics(){
		String[] tOpe={"+", "-"};
		ArrayList<String> list=new ArrayList<String>();
		String aOpe="",bOpe="";
		String arithmetic="";
		for(int i=1;i<=10;i++){
			
			int num1=(int)(Math.random()*13)+1;
			int num2=(int)(Math.random()*10)+1;
			int num3=(int)(Math.random()*10)+5;
			int index=(int)(Math.random()*2);
			aOpe=tOpe[index];
			index=(int)(Math.random()*2);
			bOpe=tOpe[index];
			
			int[] nums={num1,num2,num3};
			String[] str_numbers=number_addZero(nums);
			
			int ge1=num1%10;
			int ge2=num2%10;
			if((aOpe).equals("+")){
				arithmetic=str_numbers[0]+"+"+str_numbers[1]+bOpe+str_numbers[2]+"=";
				int rs=100;
				if(bOpe.equals("-")){
					rs=num1+num2-num3;
				}else{
					rs=num1+num2+num3;
				}
				while(  9>(num1+num2) || (num1+num2)>16 ||  list.contains(arithmetic)  ||  (ge1+ge2)<=8 || rs<=0 ){
					num1=(int)(Math.random()*20)+4;
					num2=(int)(Math.random()*11)+3;
					num3=(int)(Math.random()*11)+3;
					ge1=num1%10;
					ge2=num2%10;
					
					if(bOpe.equals("-")){
						rs=num1+num2-num3;
					}else{
						rs=num1+num2+num3;
					}
					nums=new int[]{num1,num2,num3};
					str_numbers=number_addZero(nums);
					arithmetic=str_numbers[0]+"+"+str_numbers[1]+bOpe+str_numbers[2]+"=";
				}
				
			}else if((aOpe).equals("-")){
				int rs=num1-num2;
				arithmetic=str_numbers[0]+"-"+str_numbers[1]+bOpe+str_numbers[2]+"=";
				if("-".equals(bOpe)){
					rs=num1-num2-num3;
				}else{
					rs=num1-num2+num3;
				}
				while(   num1<num2 || rs<8  || rs>11 || ge1>ge2 || list.contains(arithmetic) ||rs<=0){
					num1=(int)(Math.random()*20)+4;
					num2=(int)(Math.random()*11)+3;
					num3=(int)(Math.random()*10)+5;
					rs=num1-num2;
					ge1=num1%10;
					ge2=num2%10;
					if("-".equals(bOpe)){
						rs=num1-num2-num3;
					}else{
						rs=num1-num2+num3;
					}
					nums=new int[]{num1,num2,num3};
					str_numbers=number_addZero(nums);
					arithmetic=str_numbers[0]+"+"+str_numbers[1]+bOpe+str_numbers[2]+"=";
				}
				
			}
			list.add(arithmetic);
		}
		return list;
	}
	
	
	
	
	
	/**生成四个数字的加减法: 生成一个已知算式 且结果等于另一个算式(此算式某个数是未知数), 例如 4+5=6+( )*/
	private List<String> genetateThourNum_arithmetics() {
		String[] tOpe={"=", "o"};
		ArrayList<String> list=new ArrayList<String>();
		String aOpe="";
		String arithmetic="";
		for(int i=1;i<=100;i++){
			
			int num1=(int)(Math.random()*20)+4;
			int num2=(int)(Math.random()*11)+3;
			String number1="",number2="", number3="";
			aOpe=tOpe[i%2];
			int ge1=num1%10;
			int ge2=num2%10;
			
			int ranNum=(int)(Math.random()*4+1);
			if((aOpe).equals("=")){
				arithmetic=generate_twoNum_oneArithmetic();
				String[] numbers=arithmetic.split("[+-]");
				String[] numbers2=numbers[1].split("=");
				int n1=Integer.parseInt(numbers[0]);
				int n2=Integer.parseInt(numbers2[0]);
				ranNum=1;
				if(ranNum==1){
					int n3=n1+n2-(int)((Math.random()*(n1+n2-1))+1);
					
					while(n3==n1 || n3==n2){
						n3=n1+n2-(int)((Math.random()*(n1+n2-1))+1);					
					}
					
					int[] nums=new int[]{n1, n2, n3};
					String[] str_numbers=number_addZero(nums);
					list.add(str_numbers[0]+"+"+str_numbers[1]+"="+str_numbers[2]+"+( )");
				}else if(ranNum==2){
					int n3=n1+n2-(int)((Math.random()*12)+1);
					
					while(n3==n1 || n3==n2 || n3==0){
						n3=n1+n2-(int)((Math.random()*(n1+n2))+1);					
					}
					int[] nums=new int[]{n1, n2, n3};
					String[] str_numbers=number_addZero(nums);
					list.add(str_numbers[0]+"+"+str_numbers[1]+"="+str_numbers[2]+"-( )");
					System.out.println(n1+"+"+n2+"="+n3+"-( )");
				}else if(ranNum==3){
					int rs=num1-num2;
					arithmetic=number1+"-"+number2+"=";
					while(   num1<num2 || rs<8  || rs>11 || ge1>ge2 || list.contains(arithmetic)){
						num1=(int)(Math.random()*20)+4;
						num2=(int)(Math.random()*11)+3;
						rs=num1-num2;
						ge1=num1%10;
						ge2=num2%10;
					}
					int num3=num1-num2-(int)((Math.random()*(num1-num2))+1);
					while(num3==0 || num3==num1 || num3==num2){
						 num3=num1-num2-(int)((Math.random()*(num1-num2))+1);
					}
					int[] nums=new int[]{num1, num2, num3};
					String[] str_numbers=number_addZero(nums);
					list.add(str_numbers[0]+"-"+str_numbers[1]+"="+str_numbers[2]+"+( )");
					System.out.println(number1+"-"+number2+"="+number3+"+ ( )");
				}else if(ranNum==4){
					int rs=num1-num2;
					while(   num1<num2 || rs<8  || rs>11 || ge1>ge2 || list.contains(arithmetic)){
						num1=(int)(Math.random()*20)+4;
						num2=(int)(Math.random()*11)+3;
						rs=num1-num2;
						ge1=num1%10;
						ge2=num2%10;
					}
					int num4=(int)((Math.random()*(num1-num2))+1);
					int num3=num1-num2+num4;
					int[] nums=new int[]{num1, num2, num3};
					String[] str_numbers=number_addZero(nums);
					list.add(str_numbers[0]+"-"+str_numbers[1]+"="+str_numbers[2]+"+( )");
					System.out.println(number1+"-"+number2+"="+number3+"- ( )");
				}
				
				
			}else if((aOpe).equals("o")){
				String a_arithmetic=generate_twoNum_oneArithmetic();
				String[] arithmetic_equals1=a_arithmetic.split("=");
				String b_arithmetic=generate_twoNum_oneArithmetic();
				String[] arithmetic_equals2=b_arithmetic.split("=");
				list.add(arithmetic_equals1[0]+"〇"+arithmetic_equals2[0]);
			}
			
			
		}
		return list;
	}
	
	/**用于生成两道加减法算式*/
	public String generate_twoNum_oneArithmetic(){
		String[] tOpe={"+", "-"};
		ArrayList<String> list=new ArrayList<String>();
		String aOpe="";
		String arithmetic="";
		int num1=(int)(Math.random()*20)+4;
		int num2=(int)(Math.random()*11)+3;
		int index=(int)(Math.random()*2);
		aOpe=tOpe[index];
		int ge1=num1%10;
		int ge2=num2%10;
		int[] nums=new int[]{num1, num2};
		String[] str_numbers=number_addZero(nums);
		
		if((aOpe).equals("+")){
			arithmetic=str_numbers[0]+"+"+str_numbers[1]+"=";
			
			while(  9>(num1+num2) || (num1+num2)>19 ||  list.contains(arithmetic)  ||  (ge1+ge2)<=10 ){
				num1=(int)(Math.random()*20)+4;
				num2=(int)(Math.random()*11)+3;
				ge1=num1%10;
				ge2=num2%10;
				nums=new int[]{num1, num2};
				str_numbers=number_addZero(nums);
				arithmetic=str_numbers[0]+"+"+str_numbers[1]+"=";
				
			}
			
			list.add(arithmetic);
			
			
		}else if((aOpe).equals("-")){
			int rs=num1-num2;
			arithmetic=str_numbers[0]+"-"+str_numbers[1]+"=";
			while(   num1<num2 || rs<8  || rs>15 || ge1>ge2 || list.contains(arithmetic)){
				num1=(int)(Math.random()*20)+4;
				num2=(int)(Math.random()*11)+3;
				rs=num1-num2;
				ge1=num1%10;
				ge2=num2%10;
				nums=new int[]{num1, num2};
				str_numbers=number_addZero(nums);
				arithmetic=str_numbers[0]+"-"+str_numbers[1]+"=";
			}
			list.add(arithmetic);
			
			
		}
		return arithmetic;
	}
	
	
	
	
	
}

文章来源地址https://www.toymoban.com/news/detail-661664.html

到了这里,关于小学20以内加减法_自动生成器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++基础算法①——高精度加减法计算

    当我们利用计算机进行数值计算,有时候会遇到这样的问题: n!的精确结果是多少? 当n小于30的时候,我们当然可以通过电脑自带的计算器计算出来。但是当我们遇到 100! 的时候就没有办法直接计算出精确的结果。再比如,求两个20000位的数的和。 那怎么解决精度缺失的问

    2024年02月16日
    浏览(35)
  • 计算机组成原理--基于Logisim的8位可控加减法器实验的应用(超详细/设计/实验/作业/练习)

    掌握一位全加器的实现逻辑,掌握多位可控加减法电路的实现逻辑,熟悉 Logisim 平台基本功能,能在 logisim 中实现多位可控加减法电路。 1.软件:Logisim软件、JAVA环境 2.硬件:计算机Windows 10 在 Logisim 模拟器中打开 alu.circ 文件,在对应子电路中利用已经封装好的全加器设计8

    2024年02月04日
    浏览(108)
  • 源生成器:根据需要自动生成机械重复代码

    本文概述了利用.NET Compiler Platform(“Roslyn”)SDK 附带的 源生成器 (Source Generator)自动生成机械重复的代码。关于这部分的基础入门知识可以在MSDN [1] 学到。 本文 默认 已经有一个解决方案,包含两个项目。一个是普通C#项目,依赖于另一个源生成器项目。 此处以 Dependenc

    2024年02月01日
    浏览(57)
  • AI绘画生成器推荐AI绘画自动生成器有哪些?

    1、DALL-E2 DALL-E2 是由 OpenAI 开发的 AI 图像生成器。只需几分钟,你就可以使用 AI 创建高度逼真的图像。 2、Deep Dream Generator Deep Dream是一个经过数百万张图像训练的神经网络。使用方便,只需要上传一张图片,工具即可根据原图生成新图片。 3、Artbreeder Artbreeder一款图像质量增

    2024年02月06日
    浏览(60)
  • 狗屁文章生成器-批量生成文章自动发布网站-免费下载

    狗屁文章生成器,什么是狗屁文章生成器,狗屁文章生成器从字面意思都能理解出来,就是生成的文章毫无逻辑感,胡乱生成,毫无可读性。只需要输入就能实现狗屁文章生成。狗屁文章生成器。火于2020年某老板喊一员工写3000字原创检讨,然后该员工就采用的这套狗屁

    2024年02月04日
    浏览(118)
  • 自动生成文本内容怎么弄?推荐三个ai写作生成器

    随着人工智能技术的不断发展,ai写作生成器已经成为一种越来越受欢迎的文本创作工具。这些ai写作生成器可以快速生成高质量的文章、新闻报道、产品描述等文本内容,帮助我们提高工作效率和文本创作质量。那么,ai写作生成器有哪些呢?在本文中,我将为大家介绍几款

    2024年02月16日
    浏览(42)
  • 【加强版】小学数学出题,加减乘除混合运算,支持自定义数字,一键打印

    在线预览:在线HTML代码预览和运行工具 - UU在线工具   复制下面代码后到该地址预览即可  注意: 在线预览不能打印 。如需打印,在电脑本地上新建文本文档,粘贴代码后保存,然后把文件后缀改为.html运行,出题点击打印就可以了 新增功能: 1、支持加减乘除运算混合多

    2024年01月17日
    浏览(36)
  • Javascript——生成器(Generator)自动执行

    Generator自动化是通过Thunk函数进行实现,写这篇文章的目的是为了理解通过Thunk实现Generator函数的自动执行。 我们可以带入一个业务场景来帮助我们理解Thunk实现Generator自动执行的好处,业务场景如下: 假设小明今天干了一件事情是:         1、买菜         2、买完菜回家

    2024年03月25日
    浏览(91)
  • ai绘画生成器有哪些?分享3款好用的ai自动绘画生成器

    文字和绘画是两种看似不同的艺术形式,但它们之间却有着一种神奇的联系。你或许曾经在一些创意绘画作品中发现过使用文字进行表达的元素,那么,文本究竟如何生成这些令人惊叹的艺术作品呢?今天,我们就来探索一下文字怎样可以生成创意绘画。 方法一:使用AI图片

    2024年02月10日
    浏览(43)
  • vscode 插件 codegeex 自动代码生成器

    CodeGeeX是一个具有130亿参数的多编程语言代码生成预训练模型,使用超过二十种编程语言训练得到。 基于CodeGeeX开发的插件可以实现通过描述生成代码、补全代码、代码翻译等一系列功能。 CodeGeeX同样提供可以定制的提示模式(Prompt Mode),构建专属的编程助手 自动代码生成

    2024年02月09日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包