2023-03-05 java 鸡兔同笼问题(或者多出来一条腿) 以及do while循环(满足while的条件,程序循环执行,别忘了初始变量是一定要赋值为0)

方法1:最外面是一个do-while循环,用来给程序多次执行的,
@Test
public void test07(){
    char char01 = 'y';
    do{
        System.out.println("请输入有多少头,多少条腿:");
        Scanner scanner01 = new Scanner(System.in);
        int head = scanner01.nextInt();
        int leg  = scanner01.nextInt();
        int ji =0, tu =0; //这个地方必须初始化为0,不然第二次执行的时候,它们就是从上一步的数值开始执行了
        for(ji = 0 ;ji <= head;ji++){
            for(tu = 0 ;tu <= head-ji ;tu++){
                if((ji * 2)+(tu*4) == leg && ji+tu == head)
                    System.out.println(ji+"只鸡,"+tu+"只兔");
                else if((ji * 2)+(tu*4) == leg-1 && ji+tu == head)
                    System.out.println(ji+"只鸡,"+tu+"只兔,但是多了一只脚");
            }
        }
        System.out.println("是否需要继续输入:y/else");
        String str01 = scanner01.next();  //用来接收字符串的第一个 字符
        char01 = str01.charAt(0);
    }while(char01 == 'y');//如果满足while的条件,程序继续执行
}
@Test
public void test07(){
    char char01 = 'y';
    do{
        System.out.println("请输入有多少头,多少条腿:");
        Scanner scanner01 = new Scanner(System.in);
        int head = scanner01.nextInt();
        int leg  = scanner01.nextInt();
        int ji =0, tu =0; //这个地方必须初始化为0,不然第二次执行的时候,它们就是从上一步的数值开始执行了
        for(ji = 0 ;ji <= head;ji++){
            for(tu = 0 ;tu <= head-ji ;tu++){
                if((ji * 2)+(tu*4) == leg && ji+tu == head)
                    System.out.println(ji+"只鸡,"+tu+"只兔");
                else if((ji * 2)+(tu*4) == leg-1 && ji+tu == head)
                    System.out.println(ji+"只鸡,"+tu+"只兔,但是多了一只脚");
            }
        }
        System.out.println("是否需要继续输入:y/else");
        String str01 = scanner01.next();  //用来接收字符串的第一个 字符
        char01 = str01.charAt(0);
    }while(char01 == 'y');//如果满足while的条件,程序继续执行
}

方法2:这个效率相对来说更高一些,

@Test
  public void test06(){  //鸡兔同笼问题
    System.out.println("请输入有多少头,多少条腿:");
    Scanner scanner01 = new Scanner(System.in);
    int head = scanner01.nextInt();
    int leg  = scanner01.nextInt();
    int ji , tu ;
    for(ji = 0; ji<=head;ji++){
          tu = head - ji;
        if((ji * 2)+(tu*4) == leg || (ji * 2)+(tu*4) == leg-1){
            if((ji * 2)+(tu*4) == leg) System.out.println("有"+ji+"只鸡,"+tu+"只兔");
            else   System.out.println("程序输入有错误,多一条腿。"+"有"+ji+"只鸡,"+tu+"只兔");
        }
    }
}
@Test
  public void test06(){  //鸡兔同笼问题
    System.out.println("请输入有多少头,多少条腿:");
    Scanner scanner01 = new Scanner(System.in);
    int head = scanner01.nextInt();
    int leg  = scanner01.nextInt();
    int ji , tu ;
    for(ji = 0; ji<=head;ji++){
          tu = head - ji;
        if((ji * 2)+(tu*4) == leg || (ji * 2)+(tu*4) == leg-1){
            if((ji * 2)+(tu*4) == leg) System.out.println("有"+ji+"只鸡,"+tu+"只兔");
            else   System.out.println("程序输入有错误,多一条腿。"+"有"+ji+"只鸡,"+tu+"只兔");
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值