IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java基本语法的常见练习题 -> 正文阅读

[Java知识库]Java基本语法的常见练习题

1.输出一个整数的每一位

参考代码:

//通过循环来不断的%10/10来获取每一位
    public static void func4(int n){
        while(n!=0){
            System.out.print(n%10+" ");
            n/=10;
        }
    }

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

参考代码:

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

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

素数:大于1自然数,且只能被1和其自身整除的数
参考代码:

public class test {
    public static boolean isPrime1(int n) {//方法一
        for(int i = 2;i < n;i++){
            if(n % i==0){//在n的范围内没有其他数字可以被n整除
                return false;//否则返回 false
            }
        }
        return true;
    }
    public static boolean isPrime2(int n) {//方法二
        for(int i = 2;i <=Math.sqrt(n);i++){
        //该算法只在该数字的开方内寻找,效率更高
            if(n % i==0){
                return false;
            }
        }
        return true;
    }

4.输出乘法口诀

参考代码:

 // 3.输出乘法口诀
        for(int i=1;i<=9;i++){//一共打印9行
            for(int j=1;j<=i;j++){//每行的输出不超过行数
            //注意这里是print
                System.out.print(j+"*"+i+"="+i*j+"  ");
            }
            System.out.println();
        }

输出结果:
九九乘法表

5.求两个整数的最大公约数

辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。它的具体做法是:用较小数除较大数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数
辗转相除法
参考代码:

// 求两个整数的最大公约数
        //辗转相除法
    public static int func(int a,int b){//辗转相除法
        int c = a % b;
        while(c!=0){//余数不为0,则进入循环
            a=b;//把除数赋值给被除数
            b=c;//余数赋给除数
            c=a%b;//新的余数
        }
        return b;

    }

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

参考代码:

    public static double func1(int n){//求1/1-1/2+1/3-1/4+1/5......+1/99-1/100的值
        double sum=0.0;//注意,需要用double 类型
        int flg=1;//用于修改+-号
        for(int i=1;i<=n;i++){
            sum=sum+(flg)*1.0/i;
            flg=-flg;
        }
        return sum;
    }

运行结果:
结果

7.1到100之间的所有整数中出现多少个9

参考代码:

    public static int func2(int n){
        int count=0;
        for(int i=1;i<=n;i++){//99有两个9
            if(i%10==9){//个位上有9的数字个数
                count++;
            }if(i/10==9){//十位上有9的个数
                count++;
            }
        }
        return count;
    }

运行结果:
运行结果

8.输出10000000以内的自幂数

如果在一个固定的进制中,一个n位自然数等于自身各个数位上数字的n次幂之和,则称此数为自幂数。(按10进制)
例如:在十进制中,153是一个三位数,各个数位的3次幂之和为

1 ^ 3+5 ^ 3+3^3=153,所以153是十进制中的自幂数

   public static void func6(int n){
        for(int i=0;i<n;i++){
            int sum=0;
            int count=0;//计算位数
            int tmp=i;//避免求数字位数时导致数字丢失
            //1.求当前数字是几位数
            while(tmp!=0){
                count++;
                tmp/=10;// 123/10=12  12/10=1  1/10=0
            }
            //得到当前数字的每一位
            tmp=i;//避免求数字位数时导致数字丢失
            while(tmp!=0){//对数字的每一位进行总位数的次方,并求和
            //如135则为 1^3+5^3+3^3
                sum+=Math.pow(tmp%10,count);
                tmp=tmp/10;//参考第一题中获得一个数的每一位
            }
            if(sum==i){
                System.out.println(i);
            }
        }
    }

运行结果:屏幕大小受限1~9之间的没有截屏
自幂数

9.编写代码模拟三次密码输入场景

参考代码:

    public static void guessPassword(){//猜密码三次登陆
        Scanner scanner = new Scanner(System.in);
        int count = 3;
        while(count != 0){
            System.out.println("请输入你要猜的密码:");
            String password = scanner.nextLine();
            if(password.equals("superman")){
                System.out.println("登录成功!");
                return;
            }else{
                count--;
                System.out.println("你还有"+count+"次机会!");
            }
        }
    }

运行结果:
猜三次密码

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

//输入20
    public static int func3(int n){
        int count = 0;
        while(n!=0){
            count++;
            n=n&(n-1);
        }
        return count;
    }

运行结果:
在这里插入图片描述

11.判断数字n是不是2的k次方

若n是2的k次方则其在内存中的二进制只有一位是1,此时 n&n-1结果是0
参考代码:

    public static boolean fun5(int n){
        return ((n&(n-1))==0);
    }

12.获取一个数二进制序列中所有的偶数位和奇数位(*)

解题思路:
创建 n 变量储存输入数,然后由两个循环分别由高位到低位遍历输入数的二进制序列。奇数列从 n >> 31 一直遍历到 n >> 1 并将每一位都输出,需要注意 println 是带换行符的输出,为了让数列保持在同一行,要换用 print 来输出,循环结束后再加一个换行语句,开启下一条偶数列循环。偶数列由 n >> 30 遍历到 n >> 0 并将每一位都输出,就能得到偶数列。
代码实现:

    public static void main(String[] args) {
            System.out.println("请输入一个整数: ");
            Scanner scan = new Scanner(System.in);
            int n = scan.nextInt();

            //打印奇数
            System.out.println("奇数是:");
            for(int i = 31; i >= 1; i -= 2){
                System.out.print(((n>>i)&1) + " ");
            }
            System.out.println();

            //打印偶数
            System.out.println("偶数是:");
            for(int i = 30; i >= 0; i -= 2){
                System.out.print(((n>>i)&1) + " ");
            }

运行结果:
打印奇数位和偶数位

13.完成猜数字游戏

游戏规则:
系统自动生成一个随机整数(1-100),然后用户输入一个猜测的数字,如果输入的数字比该随机数小,提示“猜小了”,如果输入的数字比随机数小提示“猜大了”,如果相等则输入“猜对了”。
参考代码:

import java.util.Random;
import java.util.Scanner;

public class test {
        // 12.完成猜数字游戏
        Random random = new Random();//默认随机种子是系统时间
        
        Scanner sc = new Scanner(System.in);
        int toGuess = random.nextInt(100)+1;//随机生成的数字范围是[0,100),+1才满足题意
        while(true) {
            System.out.println("请输入要猜测的数字:(1-100)");
            int num = sc.nextInt();
            if (num < toGuess) {
                System.out.println("猜小了");
            } else if (num > toGuess) {
                System.out.println("猜大了");
            } else {
                System.out.println("恭喜你,猜对了");
                break;
            }
        }

    }
}

运行结果:
猜数字

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-21 12:03:18  更:2021-10-21 12:04:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:14:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码