【黑马程序员java笔记】java基础的循环练习题

打印折纸数

循环题

package com.basic.struct;

/**
 * @author soso
 * @PackageName:com.basic.struct
 * @ClassName:fordemo04
 * @Description:打印折纸数
 * @date 2024/9/410:11
 */
public class fordemo04 {
    public static void main(String[] args) {
        /* 需求:求折叠次数,每折叠一次纸张的厚度是原先的两倍 */

        //1.定义一个变量来记录山峰高度
        double height = 8844430;

        //2.定义一个变量来记录纸张初始厚度
        double paper = 0.1;

        //3.定义一个变量记录此时折叠次数
        int count = 0;

        //4.循环折叠纸张,只要纸张的厚度小于山峰的高度,循环继续
        while(paper < height){
            paper = paper*2;
            count++;
        }

        System.out.println(count);



    }
}

结果是27次。

回文数

回文数

package com.basic.struct;

import java.util.Scanner;

/**
 * @author soso
 * @PackageName:com.basic.struct
 * @ClassName:fordemo05
 * @Description:判断数字是否是回文数
 * @date 2024/9/410:20
 */
public class fordemo05 {
    public static void main(String[] args) {
        /*把数字倒过来,再和原来的数字比较*/
        //1.读入数字
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter number: ");
        int n = sc.nextInt();

        //2.设置一个临时变量,保存初始数字,设置一个变量记录改变顺序的值
        int temp = n;
        int num = 0;

        //3.利用循环把右边的数字拼到最左边
        while (n !=0){
            //从右往左获取每一位数字
            int ge = n % 10;
            //修改一下n记录的值
            n = n / 10;
            //把当前获得的值拼到最左边
            num = num * 10 + ge;
        }

        //4.比较两个数并打印结果
        if (num == temp){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }



    }
}

结果图:
不是
是

求商和余数

商和余数

package com.basic.struct;

import java.util.Scanner;
/**
 * @author soso
 * @PackageName:com.basic.struct
 * @ClassName:fordemo06
 * @Description:利用循环得到商和余数
 * @date 2024/9/410:47
 */
public class fordemo06 {
    public static void main(String[] args) {
        /* 利用循环得到商和余数,不断用被除数减去除数 */
        //1.读入被除数与除数,定义记录循环数的变量
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the dividend: ");
        int dividend = sc.nextInt();
        System.out.println("Enter divisor: ");
        int divisor = sc.nextInt();
        int count = 0;

        //2.循环用被除数不断减除数,同时记录循环数
        while(dividend > divisor){
            dividend -= divisor;
            count++;
        }
        //3.打印余数和商
        System.out.println("商为:"+count);
        System.out.println("余数为:"+dividend);

    }
}

结果图:
利用循环得到被除数和除数

逢7过

逢7过

package com.basic.struct;

import java.util.Scanner;
/**
 * @author soso
 * @PackageName:com.basic.struct
 * @ClassName:fordemo07
 * @Description:逢7过
 * @date 2024/9/411:17
 */
public class fordemo07 {
    public static void main(String[] args) {
        /*从任意一个数字开始,依次递增,当数字是7或7的倍数的时候打印“过”*/
        
        //1.读取开始与结束的数字
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the begin number: ");
        int beginNum = sc.nextInt();
        System.out.println("Enter the end number(less than 100): ");
        int endNum = sc.nextInt();
        //2.循环判断并打印
        for (int i = beginNum; i <= endNum; i++) {
            if (i % 10 == 7 || i/10%10 == 7 || i%7 == 0) {
                System.out.print("过" + " ");
            }else{
                System.out.print(i + " ");
            }
            if ((i-beginNum) % 6 == 0 & (i-beginNum) != 0 ){
                System.out.print("\n");
            }
        }

    }
}

结果图:
逢7过结果图

求平方根

求平方根

package com.basic.struct;

import java.util.Scanner;
/**
 * @author soso
 * @PackageName:com.basic.struct
 * @ClassName:fordemo08
 * @Description:利用循环求平方根,还可以用二分法,先记着
 * @date 2024/9/412:42
 */
public class fordemo08 {
    public static void main(String[] args) {
        /* 利用循环求一个数的平方根,保留整数,小数舍去;从1开始平方再与输入的数比较,当平方数大于给的数时,停止循环 */
        //1.读入数字
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter number: ");
        int n = sc.nextInt();

        int sqrt = 0;
        int square = 1;
        //2.利用循环比较平方数
        while(square < n) {
            //判断是大于还是等于
            sqrt++;
            square = sqrt*sqrt;
            if(n == square) {
                System.out.println(n+"的平方根为:"+sqrt);
            } else if (n<square) {
                System.out.println(n+"的平方根为"+(sqrt-1));
            }
        }
        sc.close();

    }
}

结果图:
统一取整数

求质数

因素只有1和它本身的就是质数

package com.basic.struct;
import java.util.Scanner;
/**
 * @author soso
 * @PackageName:com.basic.struct
 * @ClassName:fordemo09
 * @Description:利用循环求质数
 * @date 2024/9/412:57
 */
public class fordemo09 {
    public static void main(String[] args) {
        /*把范围缩小到输入数的平方根,一定有一个因数是小于平方根的*/
        //1.读入数字,同时定义一个旗帜变量
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter number: ");
        int n = sc.nextInt();
        boolean flag = false;
        //2.进入循环,循环范围框定在平方根内,Math.sqrt求平方根
        for(int i = 2; i <= Math.sqrt(n); i++) {
            //2.1判断是否能够整除
            if(n % i == 0) {
                flag=true;
                break;
            }
        }
        //3.根据旗帜变量输出
        if(flag) {
            System.out.println(n+"不是质数。");
        }else{
            System.out.println(n+"是质数。");
        }

    }
}

结果图:
否定的结果

猜数字

随机数字
java内有一个类叫Random,可以用于生成随机数,用法与Scanner一样

package com.basic.struct;
import java.util.Random;
import java.util.Scanner;

/**
 * @author soso
 * @PackageName:com.basic.struct
 * @ClassName:fordemo10
 * @Description:系统随机生成随机数,再进行猜测判
 * @date 2024/9/413:45
 */
public class fordemo10 {
    public static void main(String[] args) {
        /* 系统随机生成随机数,再进行猜测 */
        //1.系统随机生成随机数
        Random rand = new Random();
        //包头不包尾,包左不包右
        int number = rand.nextInt(100);//0~99
        //定义旗帜变量判断是否猜对
        boolean flag = true;
        Scanner sc = new Scanner(System.in);
        //3.猜测随机数直至猜对
        while (flag) {
            //3.1读入猜测的数字
            System.out.print("Enter number: ");
            int n = sc.nextInt();
            //3.2判断
            if (n < number) {
                System.out.println("Your number is smaller than the number.");
            }else if(n > number){
                System.out.println("Your number is greater than the number.");
            }else{
                flag = false;
                System.out.println("You are right now.");
            }
        }
        sc.close();
    }
}

结果图:
二分法匹配

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值