Java入门必刷的基础题1(八道)

目录

1. 第一题

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

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

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

5. 输出乘法口诀表

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

7. 求二进制中 1 的个数

8.分别输出二进制中的奇数位和偶数位


下面的源码大多只有方法体,需要自己补全类之后才能用 

1. 第一题

(1)题目

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

(2)本题思路

  • 这里使用的:是Java当中的,从键盘输入数据的方式,固定格式。其中age是变量的名字,scanner是工具包的名字。
import java.util.Scanner;//导入的包
 Scanner scanner = new Scanner(System.in);//工具
        int age = scanner.nextInt();//从键盘输入年龄
  • 这题一看,就是多分支结构,并且每个选项是有范围的,所以想到if的多分支结构
if(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("老年");
        }

(3)完整代码

import java.util.Scanner;//导入的包
public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);//工具
        int age = scanner.nextInt();//从键盘输入年龄
        if(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("老年");
        }
 scanner.close();//关闭工具
    }
}

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

(1)了解素数

素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

(2)思路

  • 代码判断素数的写法:ret就是需要判断是否为素数,只需要拿i=2到i=根号ret来判断即可(一种方法)
 boolean tmp = true;
 while(i<=Math.sqrt(ret)) {
            if(ret%i==0) {
                System.out.println(ret+"不是素数");
                tmp = false;
                break;
            }
            i++;
        }
  •  导致循环结束的两种条件:不是素数提前跳出;是素数循环结束。所以需要拿一个值去标记一下:tmp
  • 如果值没有被修改,那就是素数,并打印
 if(tmp) {
           System.out.println(ret+"是素数");
       }

(3)完整代码

import java.util.Scanner;//导入的包
public class Test {
 public static void main(String[] args) {//判断素数
        Scanner scanner = new Scanner(System.in);
        int ret = scanner.nextInt();
        int i=2;
        boolean tmp = true;
        while(i<=Math.sqrt(ret)) {
            if(ret%i==0) {
                System.out.println(ret+"不是素数");
                tmp = false;
                break;
            }
            i++;
        }
       if(tmp) {
           System.out.println(ret+"是素数");
       }
        scanner.close();//关闭工具
    }
}

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

(1)思路

本体是在第二题的基础上改造,也就是在外层套上一个循环即可,用来输出1-100的数字;要注意ret++的操作

(2)完整代码

public static void main(String[] args) {//判断素数
       int ret = 2;
       while(ret<=100) {
           int j=2;
           boolean tmp = true;
           while(j<=Math.sqrt(ret)) {
               if(ret%j==0) {
                   tmp = false;
                   break;
               }
               j++;
           }
           if(tmp) {
               System.out.println(ret+"是素数");
           }
           ret++;
       }

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

(1)判断闰年的方法

闰年有两种:

  • 普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。
  • 世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。

所以代码写法:只需要将判断条件写在一起即可

 if(year%400==0||(year%100!=0&&year%4==0)) {
                System.out.println(year);
            }

(2)完整代码

public static void main6(String[] args) {
        //输出1000-2000之间的闰年
        int year = 1000;
        while(year<=2000) {
            if(year%400==0||(year%100!=0&&year%4==0)) {
                System.out.println(year);
            }
            year++;
        }
    }

5. 输出乘法口诀表

(1)了解乘法口诀表

 这就是乘法口诀表的性质和特点,里面的表格就需要我们去考虑了。

(2)思路

  • 我们可以发现,这可以想象成一个“二维数组”,肯定就是需要两个for循环来输出的。细节在于第二个循环:j<=i;
 for(i=1;i<=9;i++) {
            int j=1;
            for(j=1;j<=i;j++) {
                System.out.print(i+"*"+"="+(i*j)+" ");
            }
            System.out.println();
        }
  •  打印格式:分别需要输出i,j,i*j还有空格,第二层循环结束再换行
 System.out.print(i+"*"+"="+(i*j)+" ");

(3)完整代码

 public static void main(String[] args) {
        //输出九九口诀表
        int i=1;
        for(i=1;i<=9;i++) {
            int j=1;
            for(j=1;j<=i;j++) {
                System.out.print(i+"*"+"="+(i*j)+" ");

            }
            System.out.println();
        }

    }

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

(1)介绍最大公约数

概念:公约数是可以同时整除两个数,公约数最大的那个就是最大公约数,如:4是12与16的最大公约数,12/4==0且16/4==0,比4大的就不能整除他们俩

特点:一定<=他们之间最小的

(2)常规方法

  •  找最小值
  int a = 12;
        int b = 16;
        int min=a>b?b:a;//找最小值
  • 找最大公约数:从最小值开始往下找 ,满足条件即是最大公约数
 while(min>=1) {
            if(a%min==0&&b%min==0) {
                break;
            }
            min--;
        }
  • 完整代码 
public static void main(String[] args) {
       //求最大公因数
        int a = 12;
        int b = 16;
        int min=a>b?b:a;//找最小值
        while(min>=1) {
            if(a%min==0&&b%min==0) {

                break;
            }
            min--;
        }
        System.out.println("最大公约数是:"+min);
    }

(3)辗转相除法

  • 了解辗转相除法的做法(具体原理是什么我也不是很清楚)

用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。

  • 辗转的过程 

  • 完整代码
public static void main(String[] args) {
       //求最大公因数
        int a = 12;
        int b = 16;
        int c = a%b;
        while(c!=0) {
            a = b;
            b = c;
            c = a%b;
        }
        System.out.println("最大公约数:"+b);
    }

7. 求二进制中 1 的个数

(1)了解题目要求

如:7,二进制为00000111(只展示8位),1的位数共有3,所以需要求出3

(2)常规方法 

思路:

  • 符号按位与(&),对应位上都是1结果为1,其他为0。所以可以使用和1按位与,可以确定最低位是否为1
  • 按位与一次只能得到最低位,所以配合无符号右移符号(>>>)可以完成每一位的检查。
  • 选择无符号右移的原因:右移之和左边会补符号号,负数的话则会补1
 if(((a>>>i)&1)==1) {
               sum++;
           }

完整代码:

public static void main(String[] args) {
        //求二进制中1的个数
       int a = -1;
       int sum = 0;
       int i = 0;
       for(i=0;i<32;i++) {
           if(((a>>>i)&1)==1) {
               sum++;
           }
       }
       System.out.println(sum);
    }

(3)快速法

原理(举例说明):

完整代码: 

 public static void main(String[] args) {
        //求二进制中1的个数
        int n = 7;
        int i = 0;
        while(n!=0) {
            n=n&(n-1);
            i++;
        }
        System.out.println(i);
    }

8.分别输出二进制中的奇数位和偶数位

(1)题目意思

如:7的二进制为:00000000 00000000 00000000 00000111 

奇数位(标红的数字):1010101111010101010101 0100011

偶数位(标黑的数字):1010101111010101010101 0100011

(2)思路

  • 同样让最低位与1进行按位与操作,原数是0则是0,1则是1
  • 每次需要右移两位(跳过奇数位或者偶数位)
  • 分两个循环分别输出奇数位跟偶数位

 (3)完整代码

public static void main(String[] args) {
        int n = 7;
        int i=0;
        //获取奇数位
        System.out.print("奇数位:");
        for(i=30;i>=0;i-=2) {

            System.out.print(((n>>>i)&1)+" ");
        }
        System.out.println();
        System.out.print("偶数位:");
        for(i=31;i>=1;i-=2) {

            System.out.print(((n>>>i)&1)+" ");
        }

    }

本节完…………………………………………


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

k8s资源对象--pod

创建pod: kubectl get pod cp test_pod_1.yaml nginx_pod.yaml cah 查看详细信息&#xff1a; pod的状态处于pending可能的原因&#xff1a;一个或多个没有运行 由于当前所有节点没有可用节点&#xff08;所有节点资源不足&#xff0c;所有节点&#xff09; 查看所有&…

免费好用的DNS在线工具,DNS记录、域名被墙、Whois轻松查询

在互联网的世界中&#xff0c;DNS是一种非常重要的存在&#xff0c;它们是域名与IP地址之间的桥梁&#xff0c;用于实现用户访问网站。我们在搭建网站时&#xff0c;经常会用到一些DNS工具&#xff0c;以便了解网站的DSN情况。DNS记录查询工具、域名被墙检测工具以及Whois域名信…

【WinForm详细教程四】WinForm中的ProgressBar 、ImageList和ListView控件

文章目录 1.ProgressBar2. ImageList3.ListView控件 1.ProgressBar 用于显示某个操作的进度。 属性&#xff1a; Value: 表示当前进度条的值&#xff0c;其范围由Min和Max决定。Step: 设置每次调用PerformStep()方法时增加的步长。MarqueeAnimationSpeed: 在Style设置为Marq…

【JVM】垃圾回收机制

【JVM】垃圾回收机制 文章目录 【JVM】垃圾回收机制1. 方法区的回收2. 堆的回收2.1 引用计数法2.2 可达性分析算法 3. 对象引用3.1 强引用3.2 软引用3.3 弱引用3.4 虚引用和终结器引用 4. 垃圾回收算法4.1 标记清除算法4.2 复制算法4.3 标记整理算法4.4 分代垃圾回收算法 5. 垃…

AI视频换脸软件,无缝衔接视频可过原创【换脸脚本+使用教程】 - 沉睡者IT

手机最新ai换脸技术来了 支持换视频 一天发一百个做品都是原创 轻松上热门 AI视频换脸怎么做&#xff1f;随着人工智能技术的不断发展&#xff0c;AI视频换脸技术也越来越成熟&#xff0c;现在有越来越多的人将这项技术融入到自己的生活当中。 通过AI视频换脸技术&#xff0c…

Python---排序算法

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 Python中的排序算法用于对数据进行排序。排序算法可以使数据按照一定的规则进行排列&#xff0c;以便于数据的查找、统计、比较等操作。在数据分析、机器学习、图形计算等领域&#xff0c…

Java模块化应用实践之精简JRE | 京东云技术团队

导语 Java9及以后的版本引入了模块化特性&#xff0c;但是直到今天JDK21都发布了&#xff0c;依然没有被大量使用起来&#xff0c;那么这个特性就真的没啥意义了吗&#xff1f; 别忘了&#xff0c;Java本身可是把模块化做到了极致的&#xff0c;所以可以利用这个特性对JRE本身…

众和策略:承诺10年不减持转让!这家造车新势力拼了!

当地时间10月31日&#xff0c;美股三大股指收高&#xff0c;但在10月份均录得跌幅。其间&#xff0c;道指涨0.38%&#xff0c;10月份累计下跌1.36%&#xff1b;标普指数涨0.65%&#xff0c;10月份累计下跌2.2%&#xff1b;纳斯达克指数涨0.48%&#xff0c;10月份累计下跌2.78%。…

Debug技巧-不启用前端访问后端

在日常开发中&#xff0c;我们经常会遇到各种问题需要调试&#xff0c;前后端都启动需要耗费一定的时间和内存&#xff0c;方便起见&#xff0c;可以直接用抓包数据访问后端&#xff0c;这里我们需要用到Postman或者ApiFox 抓包数据 在系统前台触发后端请求&#xff0c;在控制…

在Maven中发布项目到Nexus私有服务器

一、测试环境 Sonatype Nexus 3.61.0-02 Maven 3.9.2 二、环境配置 2.1找到maven的配置文件 2.2添加私有仓库账户密码 <servers><server><id>nexus</id><username>admin</username><password>admin</password></server&…

Spring IOC - ConfigurationClassPostProcessor源码解析

上文提到Spring在Bean扫描过程中&#xff0c;会手动将5个Processor类注册到beanDefinitionMap中&#xff0c;其中ConfigurationClassPostProcessor就是本文将要讲解的内容&#xff0c;该类会在refresh()方法中通过调用invokeBeanFactoryPosstProcessors(beanFactory)被调用。 5…

(11月4日)GBASE南大通用 x openGauss Meetup,欢迎报名

由openGauss社区、天津南大通用数据技术股份有限公司主办&#xff0c;伟仕佳杰科技有限公司、神州数码&#xff08;中国&#xff09;有限公司协办的“GBASE南大通用 x openGauss Meetup”活动将于2023年11月4日&#xff08;周六&#xff09;在合肥市高新区云飞路66号天源迪科科…

resource manager OCB structure(iofunc_ocb_t) 扩展实例

文章目录 前言一、OCB structure(iofunc_ocb_t) 是什么二、OCB structure(iofunc_ocb_t) 扩展实例1.OCB structure(iofunc_ocb_t) 扩展后的使用实例总结参考资料前言 本文主要介绍如何对qnx系统下的resource manager OCB structure(iofunc_ocb_t) 数据结构进行扩展 软件环境:…

ts 简易封装 axios,统一 API

文章目录 为什么要封装目标文件结构封装通用请求方法获得类型提示http 方法文件上传使用示例实例化post 请求类型提示文件上传 总结完整代码&#xff1a; 为什么要封装 axios 本身已经很好用了&#xff0c;看似多次一举的封装则是为了让 axios 与项目解耦。比如想要将网络请求…

JVM堆内存解析

一、JVM堆内存介绍 Java大多数对象都是存放在堆中&#xff0c;堆内存是完全自动化管理&#xff0c;根据垃圾回收机制不同&#xff0c;Java堆有不同的结构&#xff0c;下面是我们一台生产环境服务器JVM堆内存空间分配情况&#xff0c;JVM只设置了-Xms2048M -Xmx2048M。 1、JVM堆…

软件开发项目文档系列之八数据库设计说明书

数据库设计说明书是一个关键文档&#xff0c;它提供了有关数据库的详细信息&#xff0c;包括设计、结构、运行环境、数据安全、管理和维护等方面的内容。 1 引言 引言部分&#xff0c;简要介绍数据库设计说明书的目的和内容。这部分通常包括以下内容&#xff1a; 引言的目的…

基于通道的数据增强方法_使用随机量化的方式

前言本文提出了一种适用于任意数据模态的自监督学习数据增强技术 来源&#xff1a;机器之心 仅用于学术分享&#xff0c;若侵权请联系删除 自监督学习算法在自然语言处理、计算机视觉等领域取得了重大进展。这些自监督学习算法尽管在概念上是通用的&#xff0c;但是在具体操作…

免费小程序商城搭建之b2b2c o2o 多商家入驻商城 直播带货商城 电子商务b2b2c o2o 多商家入驻商城 直播带货商城 电子商务

1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…

MyBatis实验(四)——关联查询

前言 多表关联查询是软件开发中最常见的应用场景&#xff0c;多表查询需要将数据实体之间的一对多、多对多、一对一的关系的转换为复杂的数据对象。mybaits提供的association和collection元素&#xff0c;通过映射文件构造复杂实体对象&#xff0c;在构造实体过程中&#xff0…

leetcode 155. 最小栈

2023.10.31 本题关键在于要求在能在常数时间内检索出最小元素。 其他四个方法都可以用普通的栈进行实现&#xff0c;最后一个方法“获取堆栈中最小元素” 可以借助一个新栈&#xff0c;专门用于存储栈中最小值的。具体细节看java代码&#xff1a; class MinStack {private De…