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

📄 tf2d.java

📁 本程序能计算出相应的24点结果,给出4个数值,能计算求出该4个数的组合出的24的所有结果.
💻 JAVA
字号:
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
public class Tf2d extends JFrame{ 

JLabel Lbl1,Lbl2,Lbl3,Lbl4; 
JTextField Txt1,Txt2,Txt3,Txt4; 
JButton btnOK,btnClear; 
JTextArea textArea; 
JScrollPane scroller; 
public Tf2d(){ 
super("Building 24 ---By lgsoftwind(lgsoftwind@21cn.com)"); 
Container container=getContentPane(); 
container.setLayout(new FlowLayout()); 

Lbl1=new JLabel("Number 1:"); 
container.add(Lbl1); 
Txt1=new JTextField(4); 
container.add(Txt1); 

Lbl2=new JLabel("Number 2:"); 
container.add(Lbl2); 
Txt2=new JTextField(4); 
container.add(Txt2); 

Lbl3=new JLabel("Number 3:"); 
container.add(Lbl3); 
Txt3=new JTextField(4); 
container.add(Txt3); 

Lbl4=new JLabel("Number 4:"); 
container.add(Lbl4); 
Txt4=new JTextField(4); 
container.add(Txt4); 

btnOK=new JButton("Clac"); 
btnOK.addActionListener( 
new ActionListener(){ 
public void actionPerformed(ActionEvent event) 
{ 
int v1=Integer.parseInt(Txt1.getText()); 
int v2=Integer.parseInt(Txt2.getText()); 
int v3=Integer.parseInt(Txt3.getText()); 
int v4=Integer.parseInt(Txt4.getText()); 
TF tf=new TF(v1,v2,v3,v4); 
textArea.setText(tf.getStr()); 
} 
} 
); 
container.add(btnOK); 

btnClear=new JButton("Clear"); 
btnClear.addActionListener( 
new ActionListener(){ 
public void actionPerformed(ActionEvent event) 
{ 
Txt4.setText(""); 
Txt3.setText(""); 
Txt2.setText(""); 
Txt1.setText(""); 
} 
} 
); 
container.add(btnClear); 

textArea=new JTextArea(20,40); 
//container.add(textArea); 
scroller=new JScrollPane(textArea); 
container.add(scroller); 
setSize(500,460); 
show(); 
}//end of class Tf2d′s GUI constructor 
public static void main(String args[]){ 
Tf2d tf2d=new Tf2d(); 
tf2d.addWindowListener( 
new WindowAdapter(){ 
public void windowClosing(WindowEvent windowEvent){ 
System.exit(0); 
} 
} 
);//end call to addWindowListener 

}//end main method 
} 

class TF{ 
public static String str=""; 
public static String getStr(){ 
return str; 
} 
public TF(int A,int B,int C,int D){ 
String OP[]={"+","-","*","/"}; 
int CA[][]=new int[36][4]; 
int CB[][]=new int[18][4]; 
int Aim[]={A,B,C,D}; 
int Aim2[]=new int[3]; 
int Aim3[]=new int[2]; 
makeCA(CA,Aim); 
int newNumber; 
for(int i=0;i<CA.length;i++){ 
filter(CA,Aim,Aim2,i);//move away the number who join the first clac and create a 3 elements array 
makeCA(CB,Aim2); 
for(int j=0;j<CB.length;j++){ 
filter2(CB,Aim2,Aim3,j);//move away the mumber who joined the second clas and careat a 2 elements array 
output(CA,CB,Aim,Aim2,Aim3,i,j,OP);}//building the output 
}//end of the main for 

}//end of TF′s constructor 
static boolean de(int x,int y){//divide exactly 
double x2,y2; 
x2=(double)x; 
y2=(double)y; 
if(x2/y2==x/y) 
return true; 
else 
return false; 
} 
static void swap(int x,int y){ 
int temp; 
temp=y; 
y=x; 
x=temp; 
} 
static void fill(int array[][],int counter,int i,int j){ 
int clac=0; 
int temp=0; 
int op=counter%6; 
switch(op){ 
case 0: 
clac=i+j; 
break; 
case 1: 
clac=i-j; 
break; 
case 2: 
clac=i*j; 
break; 
case 3: 
if (i==0 || j==0) 
{clac=0;} 
else{ 
if(de(i,j)) 
clac=i/j; 
else 
clac=0; 
} 

break; 
case 4://swap - 
clac=j-i; 
swap(i,j); 
op=1; 
break; 
case 5://swap / 
if (i==0 || j==0) 
{clac=0;} 
else{ 
if(de(j,i)) 
clac=j/i; 
else 
clac=0; 
} 
swap(i,j); 
op=3; 
break; 
} 
array[counter][0]=clac; 
array[counter][1]=i; 
array[counter][2]=j; 
array[counter][3]=op; 
} 
static void makeCA(int CA2[][],int Aim2[]){ 
int counter=0; 
for(int i=0;i<=Aim2.length-2;i++){ 
for(int j=i+1;j<Aim2.length;j++){ 
for(int k=0;k<=5;k++){//+,-*,/,ss,sd 
fill(CA2,counter,Aim2[i],Aim2[j]); 
counter++; 
} 
} 
} 
}//end make CA2 
static void filter(int array[][],int aim[],int aim2[],int counter){ 
int kickOffA=0; 
int kickOffB=0; 

for(int i=0;i<aim.length;i++){ 
if(array[counter][1]==aim[i]) 
kickOffA=i;} 
for(int i=0;i<aim.length;i++){ 
if(array[counter][2]==aim[i]) 
kickOffB=i; 
} 

int leave=0; 
for(int i=0;i<aim.length;i++){ 
if(i!=kickOffA && i!=kickOffB) 
{aim2[leave]=aim[i];leave++;} 
} 
aim2[leave]=array[counter][0]; 

}//end filter 
static void filter2(int array[][],int aim[],int aim2[],int counter){ 
int kickOffA=0; 
int kickOffB=0; 

for(int i=0;i<aim.length;i++){ 
if(array[counter][1]==aim[i]) 
kickOffA=i;} 
for(int i=0;i<aim.length;i++){ 
if(array[counter][2]==aim[i]) 
kickOffB=i; 
} 

int leave=0; 
for(int i=0;i<aim.length;i++){ 
if(i!=kickOffA && i!=kickOffB) 
{aim2[0]=aim[i];leave++;} 
} 
aim2[1]=array[counter][0]; 

} 


static void output(int ca[][],int cb[][],int Aim[],int Aim2[],int Aim3[],int i,int j,String op[]){ 
int v; 
v=Aim3[0]+Aim3[1]; 
if(v==24) 
math(ca,cb,Aim,Aim2,Aim3,i,j,op,0); 


v=Aim3[0]-Aim3[1]; 
if(v==24) 
math(ca,cb,Aim,Aim2,Aim3,i,j,op,1); 


v=Aim3[0]*Aim3[1]; 
if(v==24) 
math(ca,cb,Aim,Aim2,Aim3,i,j,op,2); 


if(Aim3[1]!=0){ 
if(de(Aim3[0],Aim3[1])){ 
v=Aim3[0]/Aim3[1]; 
if(v==24) 
math(ca,cb,Aim,Aim2,Aim3,i,j,op,3);} 
} 
v=Aim3[1]-Aim3[0]; 
if(v==24) 
math(ca,cb,Aim,Aim2,Aim3,i,j,op,1); 

if(Aim3[0]!=0){ 
if(de(Aim3[1],Aim3[0])){ 
v=Aim3[1]/Aim3[0]; 
if(v==24) 
math(ca,cb,Aim,Aim2,Aim3,i,j,op,3);} 

} 




} 
static void math(int ca[][],int cb[][],int aim[],int aim2[],int aim3[],int i,int j,String op[],int lastOP){ 
str+="("+aim[0]+","+aim[1]+","+aim[2]+","+aim[3]+")\t"; 
str+="("+ca[i][1]+op[ca[i][3]]+ca[i][2]+")->"+ca[i][0]+"\t"; 
str+="("+aim2[0]+","+aim2[1]+","+aim2[2]+")\t"; 
str+="("+cb[j][1]+op[cb[j][3]]+cb[j][2]+")->"+cb[j][0]+"\t"; 
str+=aim3[0]+op[lastOP]+aim3[1]; 
str+="\n"; 

} 


}//end of class TF 

⌨️ 快捷键说明

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