Java程序逻辑控制的几个小练习(熟悉一下Java的语法)

news2024/10/6 14:30:40

虽然都是一些很简单的题目,但是都是很经典的编程题,多写几道可以熟悉一些Java代码,

之前C语言敲多了一时半会有点不适应,敲起来怪怪的,感觉手不是自己的了哈哈


目录

1. 根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)

2.判定一个数字是否是素数

 3. 打印 1 - 100 之间所有的素数

 4. 输出 1000 - 2000 之间所有的闰年

5. 输出乘法口诀表 (n由用户输入)

 6. 求两个正整数的最大公约数

7. 求出0~999之间的所有“水仙花数”并输出。

 8. 写一个函数返回参数二进制中 1 的个数

 9. 数字9 出现的次数         * 编写程序数一下 1到 100 的所有整数中出现多少个数字9,以及包含 9的数字有几个

 10.猜数字游戏

11.计算分数的值  - 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值 

 12.打印x图形

如图

13.  模拟登陆 - 编写代码模拟三次密码输入的场景。


1. 根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)

    public static void main1(String[] args) {


        /**
         * 1. 根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)
         */
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入年龄:");
        while(scanner.hasNextInt()){
            int age = scanner.nextInt();
            if(age >= 0 && age <= 18){
                System.out.println("少年");
            } else if (age >= 19 && age <= 28) {
                System.out.println("青年");
            } else if (age >= 29 && age <= 55) {
                System.out.println("中年");
            } else{
                System.out.println("老年");
            }
            System.out.println("请输入年龄:");
        }
    }

2.判定一个数字是否是素数

涉及到一个Math.sqrt(isPrime)数学方法,求平方根,缩小遍历的范围

    public static void main2(String[] args) {

        /**
         * 2. 判定一个数字是否是素数
         */
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNextInt()){
            int isPrime = scanner.nextInt();
            int i = 2;
            for (i = 2; i <= Math.sqrt(isPrime); i++) {
                if(isPrime % i ==0){
                    break;//让isPrime这个数,依次除2-isPrime(优化后范围Math.sqrt(isPrime))之间的数,直到能整除时跳出循环
                }
            }
            //判断能被整除的这个数i,是否为isPrime本身。是,则为素数,否则,不是素数
            if (i > Math.sqrt(isPrime)) {
                System.out.println("是素数");
            }else {
                System.out.println("不是素数");
            }
        }
    }

 3. 打印 1 - 100 之间所有的素数

在上一题的基础上,打印出来

public static void main3(String[] args) {

        /**
         *  3. 打印 1 - 100 之间所有的素数
         */
        for (int isPrime = 1; isPrime <= 100; isPrime++) {
            int i = 2;
            for (i = 2; i <= Math.sqrt(isPrime); i++) {
                if(isPrime % i ==0){
                    break;//让isPrime这个数,依次除2-isPrime之间的数(优化范围Math.sqrt(isPrime)),直到能整除时跳出循环
                }
            }
            //判断能被整除的这个数i,是否为isPrime本身。是,则为素数,否则,不是素数
            if (i > Math.sqrt(isPrime)) {
                System.out.println(isPrime);
            }
        }
    }

 

 4. 输出 1000 - 2000 之间所有的闰年

 public static void main4(String[] args) {

        /**
         * 4. 输出 1000 - 2000 之间所有的闰年
         */
        for (int i = 1000; i <= 2000; i++) {
            if((i % 4 == 0 && i % 100 != 0)||(i % 400 == 0)){
                System.out.println(i);
            }
        }
    }

5. 输出乘法口诀表 (n由用户输入)

 public static void main5(String[] args) {

        /**
         * 5. 输出乘法口诀表
         */
//        for (int i = 1; i <= 9; i++) {
//            for (int j = 1; j <= i ; j++) {
//                System.out.printf("%d*%d=%d ",i,j,i*j);
//            }
//            System.out.println();
//        }

        /**
         * 输出n*n的乘法口诀表,n由用户输入
         */
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= i ; j++) {
                System.out.printf("%d*%d=%d ",j,i,i*j);
            }
            System.out.println();
        }
    }

 6. 求两个正整数的最大公约数

    public static void main6(String[] args) {
        /**
         * 6. 求两个正整数的最大公约数
         */
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNextInt()) {
            int a = scanner.nextInt();
            int b = scanner.nextInt();
            int c = a % b;

            while (c != 0) {
                a = b;
                b = c;
                c = a % b;
            }
            System.out.println(b);
        }
    }

7. 求出0~999之间的所有“水仙花数”并输出。

    public static void main7(String[] args) {
        /**
         * 7. 求出0~999之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数
         * * 本身,如: 153=1^3+5^3+3^3 ,则153是一个“水仙花数”。)
         */
        for (int i = 0; i < 100000; i++) {
            //求出该数是几位数
            int num = i;
            int count = 0;
            while(num != 0){
                count++;
                num /= 10;
            }
            //求出每个数字的每一位的三次方 ,计算总和
            int sum = 0;
            num = i;
            while(num != 0){
                sum += Math.pow ((num % 10),count);
                num /= 10;
            }
            //判断是否相等
            if(i == sum){
                System.out.println(i);
            }
        }
    }

 8. 写一个函数返回参数二进制中 1 的个数

    public static void main8(String[] args) {
        /**
         * 8. 写一个函数返回参数二进制中 1 的个数
         * * 比如: 15 0000 1111 4 个 1
         */
        Scanner scanner =new Scanner(System.in);
        while(scanner.hasNextInt()){
            int num = scanner.nextInt();
            int count =0;
            //方法1:用右移运算符
//            for (int i = 0; i < 32; i++) {
//                if (((num >> i) & 1) == 1) {
//                    count++;
//                }
//            }

            //方法2:num &= (num - 1)
            //每&一次,num的二进制位中都会少个1,直到num=0
            //用count计数&的次数就知道有多少个1了
            while(num != 0){
                count++;
                num &= (num - 1);
            }
            System.out.println(count);
        }

    }

 9. 数字9 出现的次数
         * 编写程序数一下 1到 100 的所有整数中出现多少个数字9,以及包含 9的数字有几个

    public static void main10(String[] args) {
        /**
         * 数字9 出现的次数
         * 编写程序数一下 1到 100 的所有整数中出现多少个数字9,以及包含 9的数字有几个
         * 20个数字9,包含9的数字有19个
         */
        //自己写的方法(求包含0的数字):不局限于几位数
//        int count = 0;
//        for (int i = 1; i <= 100; i++) {
//            int n = i;
//            //把每个数的每一位求出来,如果是9,count++
//            while(n != 0){
//                if(n % 10 == 9){
//                    //System.out.println(i);
//                    count++;
//                    break;
//                }
//                n /= 10;
//            }
//        }
//        System.out.println(count);

        //方法2:针对百位数
        Scanner scanner =  new Scanner(System.in);
        int n = scanner.nextInt();
        int count = 0;
        for (int i = 1; i <= n; i++) {
            if(i / 10 == 9){
                count++;
            } else if (i % 10 == 9) {//这里的elseif条件换成 if就是(多少个数字9)的答案了
                count++;
            }
        }
        System.out.println(count);
    }

 10.猜数字游戏

public static void main(String[] args) {
        /**
         *  猜数字游戏
         *
         */
        Random random = new Random();//不写Random()参数时,默认随机种子为系统时间(时间戳)
        Scanner scanner = new Scanner(System.in);

        int randNum = random.nextInt(100);//生成随机数用randNum储存,设置参数区间100,表示[0-100)
        System.out.println("请猜数字:");
        while(scanner.hasNextInt()){
            int guess = scanner.nextInt();
            if(guess == randNum) {
                System.out.println("猜对了");
                break;
            }else if(guess < randNum){
                System.out.println("猜小了");
            }else{
                System.out.println("猜大了");
            }
        }


    }

11.计算分数的值  - 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值 

    public static void main11(String[] args) {
        /**
         * 计算分数的值
         * 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值    。
         */
        double sum = 0.0;
        int flg = 1;
        for (int i = 1; i <= 100; i++) {
            sum += flg*(1.0/i);
            flg *= -1;//flg = -flg 这样也可以
        }
        System.out.println(sum);
    }

 12.打印x图形

如图

 

public static void main12(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int a = in.nextInt();

            for(int i = 0;i < a;i++){
                for(int j = 0;j < a;j++){
                    if(i == j || i + j == a-1){
                        System.out.print("*");
                    }
                    else{
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
        }
    }

13.  模拟登陆 - 编写代码模拟三次密码输入的场景。

 * 最多能输入三次密码,密码正确,提示“登录成功”,密码错误,可以重新输入,最多输入三次。
 * 三次均错,则提示退出程序
这里用到了psw.equals(password)方法,判断两个字符串是否一致

    public static void main9(String[] args) {
        /**
         * 模拟登陆
         * 编写代码模拟三次密码输入的场景。
         * 最多能输入三次密码,密码正确,提示“登录成功”,密码错误,可以重新输入,最多输入三次。
         * 三次均错,则提示退出程序
         */
        Scanner scanner = new Scanner(System.in);
        String password = "ABcd";
        int i = 0;
        for (i = 0; i < 3; i++) {
            System.out.println("请输入密码:");
            String psw = scanner.nextLine(); //输入密码
            if(psw.equals(password)){
                System.out.println("登录成功");
                break;
            } else if (i==2) {
                System.out.println("三次均错,退出程序");
            }
        }
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/812423.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多臂治疗规则的 Qini 曲线(Stefan Wager)

英文题目&#xff1a; Qini Curves for Multi-Armed Treatment Rules 中文题目&#xff1a;多臂治疗规则的 Qini 曲线 单位&#xff1a;Stefan Wager 论文链接&#xff1a; 代码&#xff1a;GitHub - grf-labs/maq: Treatment rule evaluation via the multi-armed Qini …

软件测试面试【证券项目公司】

这家公司是做证券项目的&#xff0c;约的9点钟&#xff0c;路程还是有点遥远&#xff0c;转了一趟公交两趟地铁&#xff0c;精力都花在了路上&#xff0c;感觉有点累&#xff0c;以下是今天得面试流程。 到公司前台给我了一张面试表&#xff0c;写完之后就是等待面试。一共面试…

Python模块psycopg2连接postgresql

目录 1. 基础语法 2. 基础用法 3. 多条SQL 4. 事务SQL 1. 基础语法 语法 psycopg2.connect(dsn #指定连接参数。可以使用参数形式或 DSN 形式指定。host #指定连接数据库的主机名。dbname #指定数据库名。user #指定连接数据库使用的用户名。…

TMS XData v5.11 2023 crack,全功能查询机制

TMS XData v5.11 2023 crack,全功能查询机制 用于多层REST/JON-HTTP/HTTPS应用服务器开发和ORM远程处理的Delphi框架。 功能概述 基于REST/JONS架构风格的服务器 从不同的客户端平台(如.NET、Java、jаvascript)轻松访问&#xff0c;因为它是基于REST/JSON的 使用标准POST、GET…

【RabbitMQ】golang客户端教程2——工作队列

任务队列/工作队列 在上一个教程中&#xff0c;我们编写程序从命名的队列发送和接收消息。在这一节中&#xff0c;我们将创建一个工作队列&#xff0c;该队列将用于在多个工人之间分配耗时的任务。 工作队列&#xff08;又称任务队列&#xff09;的主要思想是避免立即执行某些…

[golang gin框架] 43.Gin商城项目-微服务实战之后台Rbac微服务之管理员的增删改查以及管理员和角色关联

上一节讲解了后台Rbac微服务角色增删改查微服务,这里讲解权限管理Rbac微服务管理员的增删改查微服务以及管理员和角色关联微服务功能 一.实现后台权限管理Rbac之管理员增删改查微服务服务端功能 1.创建Manager模型 要实现管理员的增删改查,就需要创建对应的模型,故在server/r…

使用Beego和MySQL实现帖子和评论的应用,并进行接口测试(附源码和代码深度剖析)

文章目录 小项目介绍源码分析main.gorouter.gomodels/user.gomodels/Post.gomodels/comment.gocontrollers/post.gocontrollers/comment.go 接口测试测试增加帖子测试查看帖子测试增加评论测试查看评论 小项目介绍 经过对需求的分析&#xff0c;我增加了一些额外的东西&#x…

Linux学习之脚本优先级控制

fork炸弹 在编写Shell脚本时不要写出不可控的死循环&#xff0c;比如func() { func | func& } ; func&#xff0c;简写版为.(){ .|.& };.。接下来见证一下这两条语句的威力。因为在root用户下许多资源没有限制&#xff0c;所以useradd userfork新建一个用户userfork&a…

fwrite函数

1、函数声明 size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream ); 2、参数说明 buffer 指向要写入的数据的指针。 size 项大小&#xff08;以字节为单位&#xff09;。 count 要写入的项的最大数量。 stream 指向 FILE 结构的指针。 3、…

OpenCloudOS 与PolarDB全面适配

近日&#xff0c;OpenCloudOS 开源社区签署阿里巴巴开源 CLA (Contribution License Agreement, 贡献许可协议), 正式与阿里云 PolarDB 开源数据库社区牵手&#xff0c;并展开 OpenCloudOS &#xff08;V8&#xff09;与阿里云开源云原生数据库 PolarDB 分布式版、开源云原生数…

AD21原理图的高级应用(四)线束的设计及应用

&#xff08;四&#xff09;线束的设计及应用 Altium Designer 21 可以使用 Signal Harnesses(信号线束)的方法来建立元件之间的连接,也可用于不同原理图间的信号对接。信号线束是一种抽象连接,操作方式类似于总线,但信号线束可对包括总线、导线和其他信号线束在内的不同信号进…

el-button增加下载功能

vue3和element-plus <el-uploadv-model:file-list="fileList"action="/api/upload"multiple:limit="1":headers="headers" ><el-button type="primary">选择文件</el-button><template #file

【前缀和】560.和为 K 的子数组

Halo&#xff0c;这里是Ppeua。平时主要更新C&#xff0c;数据结构算法&#xff0c;Linux与ROS…感兴趣就关注我bua&#xff01; 和为K的子数组 题目:示例:题解&#xff1a;解法一:解法二: 题目: 示例: 题解&#xff1a; 解法一: 暴力解法:我们很容易想到通过两个for循环去遍…

【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

操作系统理论:Linux进程与进程状态(进程调度的大O(1)算法数据结构模型)

文章目录 一.进程的基本概念进程间的基本关系:父子关系 二.进程状态(1)进程的运行状态RLinux进程调度的大O(1)算法数据结构模型(运行队列哈希桶):进程的运行时间片 (2)进程的睡眠状态(S和D)(3)进程的僵尸状态和死亡状态 一.进程的基本概念 冯诺依曼体系的计算机在运行时,内存中…

基于C语言 --- 自己写一个三子棋小游戏

C语言程序设计笔记---019 初阶三子棋小游戏(开源)1、arr_main.c程序大纲2、arr_game1.h3、arr_game1.c3.1、 自定义初识化函数 InitBoard( ) 和 自定义显示函数 DisPlayBoard( )3.2、 自定义玩家下棋函数 PlayerMove( )3.4、 自定义电脑下棋函数 ComputerMove( )3.5、 输赢判断…

成为一名黑客(网络安全),需要掌握哪些黑客技能?

前言 黑客技能是一项非常复杂和专业的技能&#xff0c;需要广泛的计算机知识和网络安全知识。你可以参考下面一些学习步骤&#xff0c;系统自学网络安全。 在学习之前&#xff0c;要给自己定一个目标或者思考一下要达到一个什么样的水平&#xff0c;是学完找工作&#xff08;…

使用DataX实现mysql与hive数据互相导入导出

一、概论 1.1 什么是DataX DataX 是阿里巴巴开源的一个异构数据源离线同步工具&#xff0c;致力于实现包括关系型数据库(MySQL、Oracle 等)、HDFS、Hive、ODPS、HBase、FTP 等各种异构数据源之间稳定高效的数据同步功能。 1.2 DataX 的设计 为了解决异构数据源同步问题&#xf…

【外卖系统】分类管理业务

公共字段自动填充 需求分析 对于之前的开发中&#xff0c;有创建时间、创建人、修改时间、修改人等字段&#xff0c;在其他功能中也会有出现&#xff0c;属于公共字段&#xff0c;对于这些公共字段最好是在某个地方统一处理以简化开发&#xff0c;使用Mybatis Plus提供的公共…

简单记录牛客top101算法题(初级题C语言实现)判断回文字符串 反转字符串 合并两个有序的数组

1. 判断是否为回文字符串 给定一个长度为 n 的字符串&#xff0c;请编写一个函数判断该字符串是否回文。如果是回文请返回true&#xff0c;否则返回false。   字符串回文指该字符串正序与其逆序逐字符一致。 //示例 输入&#xff1a;"ranko" 返回值&#xff1a;fa…