⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 twentyfour.java

📁 加减乘除24,java的GUI界面,输入的数字在1-13的范围内,产生的结果中已去除了冗余的结果,并统计产生结果的个数.
💻 JAVA
字号:
import java.io.*;
import java.util.Random;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class Func                                                       
{
  float func[]=new float[6];	
	float add(float x,float y){
		return x+y;
	}
	float sub(float x,float y){
		return x-y;
	}
	float mul(float x,float y){
		return x*y;
	}
	float div(float x,float y){
		return x/y;
	}
	
	void operate(float x,float y){
		func[0]=add(x,y);
		func[1]=sub(x,y);
		func[2]=mul(x,y);
		func[3]=div(x,y);
		func[4]=-func[1];                                            
		func[5]=1/func[3];                                         
	}
}//f,g,h;
class forprinti{                                                       
private int w;		 
int vi[]=new int[3];
String si;
      public static void printf(String s){
      	System.out.print(s);
       }
	     void GetMethod(int a,int b,int i,boolean bi){
		   w=i;
		   if(w==0){  if(bi) printf("("+a+"+"+b+")");  vi[0]=a;vi[1]=0;vi[2]=b;
		   si="("+a+"+"+b+")";
		   }
		   if(w==1){  if(bi) printf("("+a+"-"+b+")");  vi[0]=a;vi[1]=1;vi[2]=b;
		   si="("+a+"-"+b+")";
		   }
		   if(w==2){  if(bi) printf("("+a+"*"+b+")");  vi[0]=a;vi[1]=2;vi[2]=b;
		   si="("+a+"*"+b+")";
		   }
		   if(w==3){  if(bi) printf("("+a+"/"+b+")");  vi[0]=a;vi[1]=3;vi[2]=b;
	   	   si="("+a+"/"+b+")";
		   }
		   if(w==4){  if(bi) printf("("+b+"-"+a+")");  vi[0]=b;vi[1]=1;vi[2]=a;
		   si="("+b+"-"+a+")";
		   }
		   if(w==5){  if(bi) printf("("+b+"/"+a+")");  vi[0]=b;vi[1]=3;vi[2]=a;
		   si="("+b+"/"+a+")";
		   }
	   }
}//rr;
class forprintj extends forprinti{         
private int w;
int vj[]=new int[5];
forprinti rr=new forprinti();
String sj;
	   void GetMethod(int a,int b,int c,int i,int j,boolean bi,boolean bj){                    
		   w=j;
		   if(w==0){	if(bj) printf("(");rr.GetMethod(a,b,i,bi);
		   if(bj) printf("+"+c+")");
		   vj[0]=rr.vi[0]; vj[1]=rr.vi[1]; vj[2]=rr.vi[2]; vj[3]=0; vj[4]=c;
		   sj="("+rr.si+"+"+c+")";
		   }
		   if(w==1){	if(bj) printf("(");rr.GetMethod(a,b,i,bi);
		   if(bj) printf("-"+c+")");
		   vj[0]=rr.vi[0]; vj[1]=rr.vi[1]; vj[2]=rr.vi[2]; vj[3]=1; vj[4]=c;
		   sj="("+rr.si+"-"+c+")";
		   }
		   if(w==2){	if(bj) printf("(");rr.GetMethod(a,b,i,bi);
		   if(bj) printf("*"+c+")");
		   vj[0]=rr.vi[0]; vj[1]=rr.vi[1]; vj[2]=rr.vi[2]; vj[3]=2; vj[4]=c;
		   sj="("+rr.si+"*"+c+")";
		   }
		   if(w==3){	if(bj) printf("(");rr.GetMethod(a,b,i,bi);
		   if(bj) printf("/"+c+")");
		   vj[0]=rr.vi[0]; vj[1]=rr.vi[1]; vj[2]=rr.vi[2]; vj[3]=3; vj[4]=c;
		   sj="("+rr.si+"/"+c+")";
		   }
		   if(w==4){	if(bj) printf("("+c+"-");rr.GetMethod(a,b,i,bi);
		   if(bj) printf(")");
		   vj[0]=c; vj[1]=1; vj[2]=rr.vi[0]; vj[3]=rr.vi[1]; vj[4]=rr.vi[2];
		   sj="("+c+"-"+rr.si+")";
		   }
		   if(w==5){	if(bj) printf("("+c+"/");rr.GetMethod(a,b,i,bi);
		   if(bj) printf(")");
		   vj[0]=c; vj[1]=3; vj[2]=rr.vi[0]; vj[3]=rr.vi[1]; vj[4]=rr.vi[2];
		   sj="("+c+"/"+rr.si+")";
		   }
	   }
}//ss;
class forprintk extends forprintj{                               
private int w;		 
int vk[]=new int[7];
forprintj ss=new forprintj();
static int counter;
String sk;
	   void GetMethod(int a,int b,int c,int d,int i,int j,int k,boolean bi,boolean bj,boolean bk){
		   w=k;
		   if(w==0){
			   ss.GetMethod(a,b,c,i,j,bi,bj);	if(bk) printf("+"+d);
			   vk[0]=ss.vj[0]; vk[1]=ss.vj[1]; vk[2]=ss.vj[2]; 
			   vk[3]=ss.vj[3]; vk[4]=ss.vj[4]; vk[5]=0; vk[6]=d;
			sk=ss.sj+"+"+d;
		   }
		   if(w==1){
			   ss.GetMethod(a,b,c,i,j,bi,bj);	if(bk) printf("-"+d);
			   vk[0]=ss.vj[0]; vk[1]=ss.vj[1]; vk[2]=ss.vj[2]; 
			   vk[3]=ss.vj[3]; vk[4]=ss.vj[4]; vk[5]=1; vk[6]=d;
			sk=ss.sj+"-"+d;
		   }
		   if(w==2){
			   ss.GetMethod(a,b,c,i,j,bi,bj);	if(bk) printf("*"+d);
			   vk[0]=ss.vj[0]; vk[1]=ss.vj[1]; vk[2]=ss.vj[2]; 
			   vk[3]=ss.vj[3]; vk[4]=ss.vj[4]; vk[5]=2; vk[6]=d;
			sk=ss.sj+"*"+d;
		   }
		   if(w==3){
			   ss.GetMethod(a,b,c,i,j,bi,bj);	if(bk) printf("/"+d);
			   vk[0]=ss.vj[0]; vk[1]=ss.vj[1]; vk[2]=ss.vj[2];
			   vk[3]=ss.vj[3]; vk[4]=ss.vj[4]; vk[5]=3; vk[6]=d;
			sk=ss.sj+"/"+d;
		   }
		   if(w==4){
			   if(bk) printf(d+"-");		ss.GetMethod(a,b,c,i,j,bi,bj);
			   vk[0]=d; vk[1]=1; 	vk[2]=ss.vj[0]; vk[3]=ss.vj[1]; 
			   vk[4]=ss.vj[2]; vk[5]=ss.vj[3]; vk[6]=ss.vj[4];
			sk=d+"-"+ss.sj;
		   }
		   if(w==5){
			   if(bk) printf(d+"/");		ss.GetMethod(a,b,c,i,j,bi,bj);
			   vk[0]=d; vk[1]=3; vk[2]=ss.vj[0]; vk[3]=ss.vj[1]; 
			   vk[4]=ss.vj[2]; vk[5]=ss.vj[3]; vk[6]=ss.vj[4];
			sk=d+"/"+ss.sj;
		   }
		  	   
	   }
}//tt;
class Print extends forprintk{
	forprintk tt=new forprintk();
void Prt(int a,int b,int c,int d,int i,int j,int k,boolean bi,boolean bj,boolean bk){
	  tt.counter++;
  	tt.GetMethod(a,b,c,d,i,j,k,bi,bj,bk);
}

}
class Exce extends forprinti{ 
	boolean IsPrint,dis;    
	void IsOutOfRange(int a,int b,int c,int d){
		IsPrint=true;
		dis=true;
		if((a<1)|(a>13))	Display(dis,a);
		if((b<1)|(b>13))	Display(dis,b);
		if((c<1)|(c>13))	Display(dis,c);
		if((d<1)|(d>13))	Display(dis,d);
	}			
	void Display(boolean b,int ii){
		if(b) 	printf(ii+ " is out of range ;\n");	
		IsPrint=false;
	}
	}//e

public class Twentyfour extends WindowAdapter implements ActionListener{ 
	JFrame f;
	JPanel p1,p2,p3;
	JButton Gene,Calc,Clear,Quit;
	TextArea Resu;
	JLabel lab1,lab2;
	JTextField n1,n2,n3,n4;
    MenuBar mb;
    Menu about;
    
    PopupMenu inf;
    Dialog d;
    Label l;
    
	int input[]=new int[4];
 
	public void Display(){
		f=new JFrame("Twenty-Four By Shoarh");
		f.setLocation(230,70);
		f.setSize(500,500);
		f.setBackground(Color.lightGray);
		f.addWindowListener(new WinClose());
        f.addWindowListener(this);		
      
		addMenu(f);
		setPopupMenu();
		showDialog();
				
		p1=new JPanel();
		Resu=new TextArea("                     SHOARH  \n              July  8th, 2006..");
		Resu.setEditable(false);
		Resu.setRows(16);
		Resu.setColumns(60);
		p1.add(Resu);
		p1.setLayout(new FlowLayout(FlowLayout.CENTER));
	
	    p2=new JPanel();
	    lab1=new JLabel("Pls Input Four Integers that Their Values Between ONE and THIRTEEN  . . .   ");
	    lab2=new JLabel("Or You can Cilck the Button 'Generate' to Generate the Num by Random . . .  ");
	    n1=new JTextField(7);  n2=new JTextField(7);
	    n3=new JTextField(7);  n4=new JTextField(7);
	    Gene=new JButton("Generate");
	    p2.setLayout(new FlowLayout(FlowLayout.CENTER));
	    p2.add(lab1);  p2.add(lab2);
	    p2.add(n1); p2.add(n2); p2.add(n3); p2.add(n4);
	    p2.add(Gene);
	    
	    p3=new JPanel();
	    Calc=new JButton("Calculate");
	    Clear=new JButton("Clear");
	    Quit=new JButton("Quit");
	    p3.setLayout(new FlowLayout(FlowLayout.CENTER));
	    p3.add(Calc);  p3.add(Clear);   p3.add(Quit);
	    Clear.addActionListener(this);
		Quit.addActionListener(this);
		Gene.addActionListener(this);
		Calc.addActionListener(this);
	
		f.add(p1,BorderLayout.NORTH);
		f.add(p2,BorderLayout.CENTER);
		f.add(p3,BorderLayout.SOUTH);
		f.setVisible(true);
				
	}	

	
	public void setPopupMenu(){
		inf=new PopupMenu("Information");
		inf.add(new MenuItem("About"));
		inf.addActionListener(this);
		f.add(inf);
	}
	public void showDialog(){
		d=new Dialog(f,"INFORMATION...",true);
		l=new Label();
		d.add(l,"Center");
		d.setSize(300,200);
		d.setLocation(400,270);
		d.addWindowListener(this);
	}
	
	public void addMenu(JFrame f){
		mb=new MenuBar();
		f.setMenuBar(mb);
		
		about=new Menu("About");
		mb.add(about);
		about.add(new MenuItem("About"));
		about.addActionListener(this);
	    
		
		}
	public void windowClosing(WindowEvent e){
			if(e.getSource()==d)
			d.setVisible(false);
			else
			System.exit(0);
		}
	
	
	public void actionPerformed(ActionEvent e){
	  if(e.getSource()==Clear){
  	     Resu.setText("");
 	   }
	  if(e.getSource()==Quit){
		 System.exit(0);
  	   }
  	  if(e.getSource()==Gene){
		  Random rand=new Random();
        n1.setText(String.valueOf(rand.nextInt(13)+1));
		n2.setText(String.valueOf(rand.nextInt(13)+1));
		n3.setText(String.valueOf(rand.nextInt(13)+1));
		n4.setText(String.valueOf(rand.nextInt(13)+1));
  	   }
  	  if(e.getSource()==Calc){
		 String S1=n1.getText().trim();
		 String S2=n2.getText().trim();
		 String S3=n3.getText().trim();
		 String S4=n4.getText().trim();
		 
		 input[0]=Integer.parseInt(S1);
		 input[1]=Integer.parseInt(S2);
		 input[2]=Integer.parseInt(S3);
		 input[3]=Integer.parseInt(S4);
		 
		 Resu.setText("");
		 Calculating();
  	   }
  	   if(e.getSource()==about){
  	   	l.setText("  BY     SHOARH        JULY  8th,2006   ");
  	   	l.setBackground(Color.CYAN);
  	   	
  	   	d.show();
  	   }
  	   
	
	
	}
	

	
	 void Calculating(){
	 	
	 	int a,b,c,d;
	 	int i,j,k;
		int counterloop=-1;
		int buffer[][]=new int[1000][7]; 
		boolean NoFound=true;  
        int Fcounter=0;
	 		 		 
	 Exce e=new Exce();                                	
     e.IsOutOfRange(input[0],input[1],input[2],input[3]);	  //CHECK IF THE INPUT IS VALID

			int InitPossible[][]={                              
		{input[0],input[1],input[2],input[3]},
		{input[0],input[1],input[3],input[2]},
		{input[0],input[2],input[1],input[3]},
		{input[0],input[2],input[3],input[1]},
		{input[0],input[3],input[1],input[2]},
		{input[0],input[3],input[2],input[1]},

		{input[1],input[0],input[2],input[3]},
		{input[1],input[0],input[3],input[2]},
		{input[1],input[2],input[0],input[3]},
		{input[1],input[2],input[3],input[0]},
		{input[1],input[3],input[0],input[2]},
		{input[1],input[3],input[2],input[0]},

		{input[2],input[1],input[0],input[3]},
		{input[2],input[1],input[3],input[0]},
		{input[2],input[0],input[1],input[3]},
		{input[2],input[0],input[3],input[1]},
		{input[2],input[3],input[1],input[0]},
		{input[2],input[3],input[0],input[1]},

		{input[3],input[1],input[2],input[0]},
		{input[3],input[1],input[0],input[2]},
		{input[3],input[2],input[1],input[0]},
		{input[3],input[2],input[0],input[1]},
		{input[3],input[0],input[1],input[2]},
		{input[3],input[0],input[2],input[1]}
		};

forprintk tt=new forprintk();
if(e.IsPrint){		
for(int ii=0;ii<24;ii++){                              
	a=InitPossible[ii][0];                                 
	b=InitPossible[ii][1];
	c=InitPossible[ii][2];
	d=InitPossible[ii][3];

	float r[]    =new float[6];                            
	float s[][]  =new float[6][6];                                      
	float t[][][]=new float[6][6][6];   
	                                 
Func f=new Func();
Func g=new Func();
Func h=new Func();


  f.operate(a,b);                                       
	for(i=0;i<=5;i++){
	r[i]=f.func[i];	                                    

		g.operate(r[i],c);                              
		for(j=0;j<=5;j++){
		s[i][j]=g.func[j];                                
			  
			h.operate(s[i][j],d);                        
			for(k=0;k<=5;k++){
            t[i][j][k]=h.func[k];                         

// printf(t[i][j][k]+"\n");                              //PRINT ALL THE VALUES			
int check;
if((t[i][j][k]>=23.9999)&&(t[i][j][k]<=24.0001)){        //DISPLAY THE RESULT IF THE RESULT EQUALS 24
    NoFound=false;
	counterloop++;
	boolean IsRedundant=true;
	int sign;

	tt.GetMethod(a,b,c,d,i,j,k,false,false,false);      

	for( sign=0;sign<7;sign++){
		buffer[counterloop][sign]=tt.vk[sign];
	 }	
	for(check=0;check<counterloop;check++){
          if(    	
         	buffer[check][0]==buffer[counterloop][0]&&
			buffer[check][1]==buffer[counterloop][1]&&
			buffer[check][2]==buffer[counterloop][2]&&
			buffer[check][3]==buffer[counterloop][3]&&
			buffer[check][4]==buffer[counterloop][4]&&
			buffer[check][5]==buffer[counterloop][5]&&
			buffer[check][6]==buffer[counterloop][6]
		    ){
			IsRedundant=false;
		      break;
		 }	
	}
	Print p=new Print();
	
	if(IsRedundant){  
	   
	Resu.append(tt.sk+" = 24 "+"\n");
	Fcounter++;

	}//END IsRedundant
} 
				}//END K
			}//END J	
		}//END I
	}//END FOR
 }//END ISPRINT       
 
	if(NoFound){
    	Resu.append(String.valueOf(input[0])+" "+String.valueOf(input[1])+" "
    	               +String.valueOf(input[2])+" "+String.valueOf(input[3])+" "
    	+"\nNo method was found by calculating that can accece to TWENTY-FOUR point...\n");       //IF NO METHOD FOUND
	}
	Resu.append("There was "+Fcounter+" method(s) found in total\n");
	Resu.append("\n");
}
		
		
			
				 
	public static void main(String[] args){
	(new Twentyfour()).Display();	
   }	
 }
	

class WinClose extends WindowAdapter{
	public void windowClosing(WindowEvent e){
		System.exit(0);}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -