小学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;
	}
	
	
	
	
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值