鸡兔同笼问题

时间:2020-11-29 11:23:35
import javax.swing.JOptionPane;
public class Jt {
public static void main(String[] args) {
int nCases=0,Heads=0,Feet=0,Rabbits=0,Chicken=0;    
        //nCases表示输入测试数据的组数,Heads表示鸡兔头的个数,Feet表示输入的脚数,Rabbits是兔子数, Chicken是鸡数
boolean contiGo=true;              //为了防止输入非法数据,设置的一个逻辑标志
String numString=JOptionPane.showInputDialog("请输入测试数据组数的整数:");
try{                    //处理输入非数值数据或输入的数是0
nCases=Integer.parseInt(numString);
if(0>=nCases){
JOptionPane.showInputDialog(null,"测试次数<=0,系统退出。","结果",JOptionPane.QUESTION_MESSAGE);
System.exit(0);
}
}catch(Exception ne){
JOptionPane.showInputDialog(null,"输入的不是数据,不符合规定,系统退出。","结果",JOptionPane.QUESTION_MESSAGE);
System.exit(0);
}
for(int k=0;k<nCases;k++){
while(contiGo==true){
numString=JOptionPane.showInputDialog(null,"请输入鸡和兔子头的个数(整数):","输入提示",JOptionPane.QUESTION_MESSAGE);
try{
Heads=Integer.parseInt(numString);
if(0>=Heads)
JOptionPane.showInputDialog(null,"头的个数不能是0或负数,请重新输入");
else
break;              //数据符合要求,跳出while循环
}catch(NumberFormatException ne){
JOptionPane.showInputDialog(null,"输入的数据类型有误,请重新输入");

}
}
while(contiGo==true){
numString=JOptionPane.showInputDialog(null,"请输入鸡和兔子头的个数(整数):","输入提示",JOptionPane.QUESTION_MESSAGE);
try{                     //处理输入非数值数据或输入的数是0
Feet=Integer.parseInt(numString);
if(Feet%2!=0)                  //如果脚的个数是奇数,则没有满足题意的答案
JOptionPane.showInputDialog(null,"脚的总数为单数,这是不行的。","报错",JOptionPane.QUESTION_MESSAGE);
else if(0>=Feet)
JOptionPane.showInputDialog(null,"脚的个数不能是0或负数,请重新输入");
else if(Feet>(4*(Heads-1)+2)||(4+2*(Heads-1))>Feet)
//脚的总数应满足的条件:最少有一只鸡,其他是兔子;
//或者最少有一只兔子,其他是鸡。否则输入的脚数就不对。
JOptionPane.showInputDialog(null,"脚的个数太多或太少,与头的个数不匹配,请重新输入");
else
break;              //数据符合要求,跳出while循环
}catch(NumberFormatException ne){
JOptionPane.showInputDialog(null,"输入的数据类型有误,请重新输入");
}
}
Chicken=2*Heads-Feet/2;
Rabbits=Heads-Chicken;
JOptionPane.showInputDialog(null,"有"+Rabbits+"只兔子,\n有"+Chicken+"只鸡。","计算结果",JOptionPane.QUESTION_MESSAGE);
} 
}
}

鸡兔同笼问题
鸡兔同笼问题
鸡兔同笼问题
鸡兔同笼问题