当前位置: 代码迷 >> J2SE >> 求这段代码
  详细解决方案

求这段代码

热度:8208   发布时间:2013-02-25 00:00:00.0
求高手指点这段代码
简单的鸡兔同笼问题,算法没错,能运行,就是运行时会出问题,老师在判断的地方出错,求大神指点,不胜感激!

import java.util.*;
public class ChickenAndRabbit {
int head=0;
int leg=0;
int temp=0;
public void Head(){
//判断头的个数是否小于零
if(head<=0){
Scanner sc=new Scanner(System.in);
System.out.print("头的个数输入有误,应为正整数,请输入头的个数:");
head=sc.nextInt();
}
}

public void Leg(){
//判断腿的个数是否为奇数
if(leg%2==1){
Scanner cs=new Scanner(System.in);
System.out.print("输入的脚的个数有误,应输入偶数,请输入脚的个数:");
leg=cs.nextInt();
 
}
//判断腿的个数是否小于零
if(leg<=0){
Scanner cs=new Scanner(System.in);
System.out.print("脚的个数输入有误,应为正偶数,请输入脚的个数:");
leg=cs.nextInt();
}
if(leg<head){
Scanner cs=new Scanner(System.in);
System.out.print("脚的个数输入有误,应大于头的个数,请输入脚的个数:");
leg=cs.nextInt();
}
}

public static void main(String[] args) {
int chicken;
int rabbit;
int head;
int leg;

System.out.print("请输入头的个数:");
Scanner sc=new Scanner(System.in);
head=sc.nextInt();
ChickenAndRabbit h=new ChickenAndRabbit();
h.Head();
System.out.print("请输入脚的个数:");
Scanner cs=new Scanner(System.in);
leg=cs.nextInt();
ChickenAndRabbit l=new ChickenAndRabbit();
l.Leg();
//引入Head方法判断
//引入Leg方法判断

//计算语句
rabbit=(leg-2*head)/2;
chicken=head-rabbit;
System.out.println("鸡的个数是:"+chicken);
System.out.println("兔的个数是:"+rabbit);
}
}


------解决方案--------------------------------------------------------
改了改,参考一下吧:
Java code
import java.util.*;public class ChickenAndRabbit{    int head=0;    int leg=0;    int temp=0;    public void Head()    {        //判断头的个数是否小于零            if(head<=0)        {            Scanner sc=new Scanner(System.in);            System.out.print("头的个数输入有误,应为正整数,请输入头的个数:");            head=sc.nextInt();        }    }    public void Leg()    {        //判断腿的个数是否为奇数            if(leg%2==1)        {                Scanner cs=new Scanner(System.in);            System.out.print("输入的脚的个数有误,应输入偶数,请输入脚的个数:");            leg=cs.nextInt();        }        //判断腿的个数是否小于零        if(leg<=0)        {                Scanner cs=new Scanner(System.in);            System.out.print("脚的个数输入有误,应为正偶数,请输入脚的个数:");            leg=cs.nextInt();        }        if(leg<2*head)                                    //脚数至少得是头的2倍。        {            Scanner cs=new Scanner(System.in);            System.out.print("脚的个数输入有误,应大于头的个数的2倍,请输入脚的个数:");            leg=cs.nextInt();        }    }    public static void main(String[] args)     {        int chicken;        int rabbit;        int head;        int leg;        System.out.print("请输入头的个数:");        Scanner sc=new Scanner(System.in);        head=sc.nextInt();        ChickenAndRabbit h=new ChickenAndRabbit();        h.head=head;                    //把此处main方法的head 赋值给对象h.        h.Head();                    //调用对象的方法判断。        head=h.head;                    //合格后取出敷给main方法变量head.        System.out.print("请输入脚的个数:");        Scanner cs=new Scanner(System.in);        leg=cs.nextInt();        //ChickenAndRabbit l=new ChickenAndRabbit();    //已经有了对象了,不要再建了。都用h 就行。        h.leg=leg;                    //原理同上head.         h.Leg();        leg=h.leg;        //引入Head方法判断        //引入Leg方法判断        //计算语句        rabbit=(leg-2*head)/2;        chicken=head-rabbit;        System.out.println("鸡的个数是:"+chicken);        System.out.println("兔的个数是:"+rabbit);    }}
  相关解决方案