鸡兔同笼问题

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);
} 
}
}

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值