public class D{
 public static void main(String[] args){
  int rooster,hen,chick;
   for(rooster=0;rooster<=20;rooster++){
    for(hen=0;hen<=33;hen++){
     for(chick=3;chick<=300;chick++){
      if((rooster+hen+chick==100)&&((5*rooster+3*hen+chick/3)==100)){
      System.out.print  ("rooster's num:" + rooster+"\t");
      System.out.print  ("    hen's num:" + hen+"\t");
      System.out.println("  chick's num:" + chick+"\t");
}
}
}
}}
}
我的计算结果是rooster's num:0     hen's num:25   chick's num:75
rooster's num:3     hen's num:20   chick's num:77
rooster's num:4     hen's num:18   chick's num:78
rooster's num:7     hen's num:13   chick's num:80
rooster's num:8     hen's num:11   chick's num:81
rooster's num:11     hen's num:6   chick's num:83
rooster's num:12     hen's num:4   chick's num:84
想请问到底错在哪里了??

解决方案 »

  1.   

    把:if((rooster+hen+chick==100)&&((5*rooster+3*hen+chick/3)==100)){改为:if((rooster+hen+chick==100)&&((5*rooster+3*hen+chick/3.0)==100.0)){int 除以 int 的意思是整数,并不会产生小数的,将 3 改成 3.0 就可以了。
      

  2.   

    把 for(chick=3;chick<=300;chick++){ 这个循环去掉,改成:chick = 100 - rooster - hen;以便加快速度。
      

  3.   

    错在chick/3 因为chick/3是取整的,可以这样改:if((chick%3==0)&&(rooster+hen+chick==100)&&((5*rooster+3*hen+chick/3)==100))
      

  4.   

    //优化代码
    for(rooster=0;rooster<=100/5;rooster++){
        for(hen=0;hen<=(100-rooster*5)/3;hen++){
        {
            chick=100-rooster-hen;
            if(chick%3!=0)
               continue;
            if(rooster*5+hen*3+chick/3==100)
               System.out.println(....);//略
        }
      

  5.   

    //修正下,附带加点注释
    for (int rooster = 1; rooster <= 100 / 5; rooster++) {//
    for (int hen = 1; hen <= (100 - rooster * 5) / 3; hen++) {//根据总价100
                                                                       //尽量减少循环
    int chick = (100 - 5 * rooster - 3 * hen) * 3;//根据总价计算
    if (rooster + hen + chick != 100)//根据总数判断
    continue;
    System.out.println("rooster=" + rooster + ",hen=" + hen
    + ",chick=" + chick);
    }
    }
      

  6.   

    计算结果
    rooster=4,hen=18,chick=78
    rooster=8,hen=11,chick=81
    rooster=12,hen=4,chick=84
      

  7.   

    public class Baiqian
    {
        public static void main(String [] args)
        {
            int x=0,z=0;
            int y;
            for(int i=0;i<20;i++){
             x=i;
               for(int j=3;j<100;j+=3){
                z=j;
                y=100-x-z;
                if(5*x+3*y+z/3==100&&y>0&&x>0){
                System.out.print(x+"\t"+y+"\t"+z+"\t");
                System.out.println();
              }
                }
        }
    }
    }
      

  8.   

    这么多人回帖感谢大家不过我得出四种答案
    rooster's num:0     hen's num:25   chick's num:75
    rooster's num:4     hen's num:18   chick's num:78
    rooster's num:8     hen's num:11   chick's num:81
    rooster's num:12     hen's num:4   chick's num:84
      

  9.   

    4 种是正确答案。redduke1202 的循环应该从 0 开始,而不是从 1 开始。