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

📄 test.java

📁 自己输入或计算机随机产生4个小于13的数,使用+,-,*,/,()运算符号计算24点
💻 JAVA
字号:
import java.awt.*; 
import javax.swing.*; 

import java.awt.event.*; 

public class Test extends JFrame 
{ 
int[] number=new int[4]; //四个数 

String en=""; //答案 

JButton b1,b2; 
JTextField[] txt=new JTextField[4]; 
JTextArea txtarea=new JTextArea(10,20); 
JScrollPane scro=new JScrollPane(txtarea); 

JPanel p1=new JPanel(); 

int result=24; 

String[] sg={" + "," - "," * "," / "}; 

int[][] numberOrder=new int[24][4]; //四个数的排列顺序,有24种可能性 

{ //初始化四个数的排列顺序 
int t=0; 
for(int i=0;i<4;i++) 
{ 
for(int j=0;j<4;j++) 
{ 
if(j!=i) 
for(int k=0;k<4;k++) 
{ 
if(k!=i && k!=j) 
for(int l=0;l<4;l++) 
{ 
if(l!=i && l!=j && l!=k) 
{ 
numberOrder[t][0]=i; 
numberOrder[t][1]=j; 
numberOrder[t][2]=k; 
numberOrder[t][3]=l; 
t++; 
} 
} 
} 
} 
} 
} 

public Test() 
{ 
b1=new JButton("电脑出题"); 
b1.addActionListener(new ActionListener() 
{ 
public void actionPerformed(ActionEvent e) 
{ 
en=""; 
randomNumber(); 
for(int i=0;i<4;i++) 
{ 
txt[i].setText(""+number[i]); 
} 
txtarea.setText(""); 
} 
} 
); 

b2=new JButton("显示答案"); 
b2.addActionListener(new ActionListener() 
{ 
public void actionPerformed(ActionEvent e) 
{ 
if( txt[0].getText().equals(""+number[0]) && txt[1].getText().equals(""+number[1]) && 
txt[2].getText().equals(""+number[2]) && txt[3].getText().equals(""+number[3]) ) 
{ 
txtarea.setText(en); 
} 
else 
{ 
en=""; 

try 
{ 
int n1,n2,n3,n4; 

n1=(int)Integer.parseInt(txt[0].getText()); 
n2=(int)Integer.parseInt(txt[1].getText()); 
n3=(int)Integer.parseInt(txt[2].getText()); 
n4=(int)Integer.parseInt(txt[3].getText()); 

if( (""+n1).equals(txt[0].getText() ) && //是否是整数 
(""+n2).equals(txt[1].getText() ) && 
(""+n3).equals(txt[2].getText() ) && 
(""+n4).equals(txt[3].getText() ) && 
n1<=13 && n1>0 && //是否在有效范围内 
n2<=13 && n2>0 && 
n3<=13 && n3>0 && 
n4<=13 && n4>0 
) 
{ 
number[0]=n1; 
number[1]=n2; 
number[2]=n3; 
number[3]=n4; 

if(testSign()) 
{ 
txtarea.setText(en); 
} 
else 
{ 
txtarea.setText("您输入的四个整数不能运算为24!"); //没有答案 
} 
} 
else 
{ 
throw(new Exception()); 
} 

} 
catch (Exception ex) //用户输入的不是整数 
{ 
txtarea.setText("请输入四个1到13之间的整数!"); 
} 
} 
} 
} 
); 

randomNumber(); //生成可运算的随机数 

for(int i=0;i<4;i++) 
{ 
txt[i]=new JTextField(4); 
txt[i].setHorizontalAlignment( JTextField.CENTER ); 
txt[i].setText(""+number[i]); 
p1.add(txt[i]); 
} 

p1.add(b2); 
p1.add(b1); 

this.getContentPane().add(p1,BorderLayout.NORTH); 

this.getContentPane().add(scro); 

this.getContentPane().add(new JLabel(" 可以自己输入数字,也可以由电脑随机出数"),BorderLayout.SOUTH); 

pack(); 
setVisible(true); 
} 

//生成四个结果可为24的随机数 
private void randomNumber() 
{ 
boolean ok=false; 
while(! ok) 
{ 
number[0]=(int)(Math.random()*12)+1; 
number[1]=(int)(Math.random()*12)+1; 
number[2]=(int)(Math.random()*12)+1; 
number[3]=(int)(Math.random()*12)+1; 

ok=testSign(); 
} 

} 

private boolean testSign() //在三个位置上编历四种符号( + - * / ) 
{ 
int[] sign=new int[3]; // 三个符号 

boolean ok=false; 

for(int s1=0;s1<4;s1++) 
{ 
for(int s2=0;s2<4;s2++) 
{ 
for(int s3=0;s3<4;s3++) 
{ 
for(int r=0;r<24;r++) 
{ 
if( testIfResult( number[numberOrder[r][0]] , 
number[numberOrder[r][1]] , 
number[numberOrder[r][2]] , 
number[numberOrder[r][3]] , 
s1,s2,s3 ) 
) 
ok=true; 
} 
} 
} 
} 

return ok; 
} 

private double compute(int sign,double n1,double n2) 
{ 
switch(sign) 
{ 
case 0: 
return n1+n2; 
case 1: 
return n1-n2; 
case 2: 
return n1*n2; 
case 3: 
return n1/n2; 
} 
return n2; 
} 

public boolean testIfResult(double n1,double n2,double n3,double n4, 
int s1,int s2,int s3) 
{ 
String en=""; 

//尝试不同的运算顺序 

// ((n1+n2)+n3)+n4 
if(Math.abs( compute(s3,compute(s2,compute(s1,n1,n2),n3),n4) -result)<1e-6) 
en+= " ( ( "+n1+sg[s1]+n2+ " ) " +sg[s2]+n3+ " ) " + sg[s3] +n4 +"\n"; 

// (n1+n2)+(n3+n4) 
if(Math.abs( compute(s2,compute(s1,n1,n2),compute(s3,n3,n4)) -result)<1e-6) 
en+=" ( " +n1+sg[s1]+n2+" ) "+ sg[s2] +" ( "+ n3 + sg[s3] +n4+" ) " +"\n"; 

// (n1+(n2+n3))+n4 
if(Math.abs( compute(s3,compute(s1,n1,compute(s2,n2,n3)),n4) -result)<1e-6) 
en+=" ( " +n1+sg[s1]+" ( "+n2+ sg[s2] + n3 + " ) ) " + sg[s3] +n4 +"\n"; 

// n1+((n2+n3)+n4) 
if(Math.abs( compute(s1,n1,compute(s3,compute(s2,n2,n3),n4)) -result)<1e-6) 
en+=" " +n1+sg[s1]+" ( ( "+n2 +sg[s2]+n3+ " ) " + sg[s3] +n4+ " ) " +"\n"; 

// n1+(n2+(n3+n4)) 
if(Math.abs( compute(s1,n1,compute(s2,n2,compute(s3,n3,n4))) -result)<1e-6) 
en+=" "+ n1 +sg[s1]+" ( "+n2+ sg[s2] + " ( " +n3 + sg[s3] +n4 + " ) ) " +"\n"; 

if(en.length()>0) 
{ 
this.en=this.en+en; 
return true; 
} 
else 
{ 
return false; 
} 
} 

public static void main(String[] args) 
{ 
Test f=new Test(); 
} 
} 

⌨️ 快捷键说明

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