牛客网刷题——JAVA

简介: 牛客网刷题——JAVA

一、二进制序列

获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列
public static void main(String[] args) {
        //获取二进制的奇偶位
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        System.out.print("偶数位: ");
        for (int i = 31; i >= 1; i-=2) {
            int bit = 0;
            bit = (n>>i)%2;
            System.out.print(bit+" ");
        }
        System.out.println();
        System.out.print("奇数位: ");
        for (int i = 30; i >= 0; i-=2) {
            int bit = 0;
            bit = (n>>i)%2;
            System.out.print(bit+" ");
        }
    }

在这里插入图片描述

二、模拟登陆

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

在这里插入图片描述
在这里插入图片描述

三、输出一个整数的每一位

输出一个整数的每一位,如:123的每一位是3,2,1
public static void main11(String[] args) {
    //输出整数的每一位
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    System.out.print(n+"的每一位为: ");
    while(n > 0) {
        System.out.print(n % 10 + " ");
        n /= 10;
    }
}

在这里插入图片描述

四、输出乘法口诀表

输出n*n的乘法口诀表,n由用户输入
public static void main(String[] args) {
        //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.print(j+" * "+i+" = "+i*j+" ");
            }
            System.out.println();
        }
    }

在这里插入图片描述

五、打印 X 图形

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。
输入描述:
多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。
输出描述:
针对每行输入,输出用“*”组成的X形图案。

在这里插入图片描述

public static void main(String[] args) {
        //输出X图
        Scanner scan = new Scanner(System.in);
        while(scan.hasNextInt()) {
            int n = scan.nextInt();
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    if(i == j ||i + j == n-1) {
                        System.out.print("*");
                    }else {
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
        }
    }

在这里插入图片描述

六、水仙花数

求出0~n之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本 身,如;153=1^3+5^3+3^3,则153是一个“水仙花数“。)
public static void main(String[] args) {
        //求100 - n之间的水仙花数
        Scanner scanner = new Scanner(System.in);
        int n=scanner.nextInt();
        for (int i = 100; i <= n; i++) {
            int ret = i;
            int sum = 0;
            while(ret > 0) {
                sum +=(ret%10)*(ret%10)*(ret%10);
                ret /= 10;
            }
            if(sum == i) {
                System.out.println(i);
            }
        }
    }

在这里插入图片描述

七、分数之和

计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值 。
public static void main(String[] args) {
        //计算分数的值
        double sum = 0;
        for (int i = 1; i <= 100; i++) {
            if(i%2 == 1) {
                sum += 1.0/i;
            }else {
                sum-=1.0/i;
            }
        }
        System.out.println(sum);
    }

在这里插入图片描述

八、二进制1的个数

求一个整数,在内存当中存储时,二进制1的个数
public static void main(String[] args) {
        //统计二进制中1的个数
        Scanner scanner =new Scanner(System.in);
        int n = scanner.nextInt();
        int count = 0;//计数
        while(n>0) {
            if(n%2==1) {
                count++;
            }
            n>>=1;
        }
        System.out.println(count);
    }

在这里插入图片描述

目录
相关文章
|
6月前
|
Java
2022蓝桥杯大赛软件类省赛Java大学B组真题 刷题统计
2022蓝桥杯大赛软件类省赛Java大学B组真题 刷题统计
63 0
|
7月前
|
算法 Java C++
【Java 刷题记录】位运算
【Java 刷题记录】位运算
58 2
|
7月前
|
Java
JAVA数据结构刷题 -- 二叉树进阶
JAVA数据结构刷题 -- 二叉树进阶
50 0
|
7月前
|
存储 Java
JAVA数据结构刷题 -- 力扣二叉树
JAVA数据结构刷题 -- 力扣二叉树
60 0
|
7月前
|
算法 Java C++
刷题两个月,从入门到字节跳动offer丨GitHub标星16k+,美团Java面试题
刷题两个月,从入门到字节跳动offer丨GitHub标星16k+,美团Java面试题
|
7月前
|
消息中间件 前端开发 Java
java面试刷题软件kafka和mq的区别面试
java面试刷题软件kafka和mq的区别面试
|
7月前
|
Java 索引
JAVA刷题之数组的总结和思路分享
JAVA刷题之数组的总结和思路分享
|
4天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
6天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。
|
6天前
|
消息中间件 缓存 安全
Java多线程是什么
Java多线程简介:本文介绍了Java中常见的线程池类型,包括`newCachedThreadPool`(适用于短期异步任务)、`newFixedThreadPool`(适用于固定数量的长期任务)、`newScheduledThreadPool`(支持定时和周期性任务)以及`newSingleThreadExecutor`(保证任务顺序执行)。同时,文章还讲解了Java中的锁机制,如`synchronized`关键字、CAS操作及其实现方式,并详细描述了可重入锁`ReentrantLock`和读写锁`ReadWriteLock`的工作原理与应用场景。