📄 tf2d.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 + -