首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Java基础练习题

Java基础练习题

作者头像
趙卋傑
发布2026-01-12 15:26:24
发布2026-01-12 15:26:24
1130
举报

1.猜数字游戏

系统自动生成一个随机整数(1-100), 然后由用户输入一个猜测的数字. 如果输入的数字比该随机数小, 提示 "低 了", 如果输入的数字比该随机数大, 提示 "高了" , 如果输入的数字和随机数相等, 则提示 "猜对了" .

1.1编写过程

在使用Random时需要进行引包操作

代码语言:javascript
复制
import java.util.Random;

第一步:生成随机数

代码语言:javascript
复制
Random randNum = new Random();//默认随机种子是默认时间
int toGuess = randNum.nextInt(100);

第二步:输入猜想的数字

代码语言:javascript
复制
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();

第三步:利用循环来比较数字

代码语言:javascript
复制
while(true) {
            System.out.println("请输入要输入的数字:(1-100)");
            int num = scan.nextInt();
            if(num > toGuess) {
                System.out.println("猜大了");
            }
            else if (num < toGuess) {
                System.out.println("猜小了");
            }
            else {
                System.out.println("猜对了");
                break;
            }
        }

1.2完猜数字完整代码

代码语言:javascript
复制
import java.util.Random;
import java.util.Scanner;

public class practice {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        Random randNum = new Random();//默认随机种子是默认时间

        int toGuess = randNum.nextInt(100);
        System.out.println("toGuess: " + toGuess);
        while(true) {
            System.out.println("请输入要输入的数字:(1-100)");
            int num = scan.nextInt();
            if(num > toGuess) {
                System.out.println("猜大了");
            }
            else if (num < toGuess) {
                System.out.println("猜小了");
            }
            else {
                System.out.println("猜对了");
                break;
            }
        }
        scan.close();
    }
}

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

判定一个数字是否是素数

代码语言:javascript
复制
public class practice {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int num = scan.nextInt();
        int i = 2;
        for (i = 2;i<num;i++) {
            if(num % i == 0) {
                System.out.println(num + "不是素数");
                break;
            }
        }
        if(i == num) {
            System.out.println(num + "是素数");
        }
    }

3.打印1-1000的所有素数

法一:

代码语言:javascript
复制
public class practice {
    public static void main(String[] args) {
        int i = 0;
        int j = 0;
        for(i = 1;i <= 1000;i++) {
            for(j = 2;j <= i;j++) {
                if(i % j == 0) {
                    break;
                }
            }
            if(i == j) {
                System.out.println(i);
            }
        }
    }

法二:

代码语言:javascript
复制
public class practice {
    public static void main(String[] args) {
        int i = 0;
        int j = 0;
        for(i = 1;i <= 1000;i++) {
            for(j = 2;j <= Math.sqrt(i);j++) {
                if(i % j == 0) {
                    break;
                }
            }
            if(i == j || i %j != 0) {
                System.out.println(i);
            }
        }
    }

4.输出闰年

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

普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。

世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。

代码语言:javascript
复制
public static void main(String[] args) {
        int count = 0;
        for(int year=1000;year<=2000;year++){

            if((year%4==0) && (year %100!=0) ||(year %400 == 0) ){

                System.out.println(year);
                count++;
            }
        }
        System.out.println(count);

    }

5.打印乘法口诀表

打印9 * 9口诀表

代码语言:javascript
复制
public class practice {
    public static void main(String[] args) {
        int i = 0;
        int j = 0;
        for(i = 1;i <= 9;i++) {
            for(j = 1;j <= i;j++) {
                System.out.printf("%d*%d=%d ",j,i,(i*j));
            }
            System.out.println();
        }
    }

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

输入两个正整数,输出他们的最大公约数

利用辗转相除法

代码语言:javascript
复制
ublic class practice {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int a = scan.nextInt();
        int b = scan.nextInt();
        if(a<b){
            int tmp = a;
            a = b;
            b = tmp;
        }
        while(a%b != 0) {
            int c = a % b;
            a = b;
            b = c;
        }
        System.out.println(b);
    }

7. 水仙花数

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

代码语言:javascript
复制
public class practice {
    public static void main(String[] args) {
        for(int n=1;n<999;n++){
            int tmp=n;
            int count = 0;
            //1.算出该数字有多少位

            while(tmp!=0){
                count++;
                tmp = tmp/10;
            }//得到的count 即为该数字的位数

            //2.将该数字的每一位数字得到,算出每一位数字的次方的和
            tmp=n;
            int sum = 0;
            while(tmp!=0){
                sum += Math.pow(tmp%10,count);
                tmp = tmp/10;
            }

            //3.比较结果与原数字是否相等

            if(sum==n){
                System.out.println(sum+"是水仙花数");
            }
        }
    }

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

写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 1

代码语言:javascript
复制
import java.util.Scanner;

 public static void main(String[] args) {
        Scanner sc =  new Scanner(System.in);
        System.out.print("请输入数字:");
        int num = sc.nextInt();
        int count = 0;
        for(int i=0;i<32;i++){
            if(((num>>i) & 1 )== 1){
                count++;
            }
        }
        System.out.println(count);
    }

9.数字中9出现的个数

代码语言:javascript
复制
// 9  19  29  39  49  59  69  79  89  90  91  92  93 94  95  96  97  98  99

    public static void main(String[] args) {

        int count = 0;
        for( int i = 0;i<=100;i++){

            if(i%10==9){
                count++;
            }
            if(i/10==9){
                count++;
            }
        }
        System.out.println(count);
    }

10.计算表达式的值

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

代码语言:javascript
复制
public static void main(String[] args) {
        int flag = 1;
        double sum = 0.0;
        for(int i=1;i<=100;i++){
            sum += (flag)*(1.0/i) ;

            flag=-flag;

        }
        System.out.println(sum);


    }

11.求二进制奇偶序列

获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。

解题思路:

2的二进制位为:0000 0000 0000 0000 0000 0000 0000 0001

代码语言:javascript
复制
import java.util.Scanner;
 
public class main {
    public static void main(String[] args) {
 
        Scanner sca = new Scanner(System.in);
        int num = sca.nextInt();//输入整数
 
        System.out.println("奇数位为:");//输出奇数位
        //整形为4字节,32个比特位
        for (int i = 31; i >= 1; i -= 2){
            System.out.print(num>>i&1); //右移,然后与1得到该位的值
        }
        System.out.println();//换行
        System.out.println("偶数位为:");//输出偶数位
        for (int i = 30; i >= 0; i -= 2){
            System.out.print(num>>i&1);//同奇数位
        }
    }
}
  1. 从右向左数,最后一个偶数位需要右移31位,第一个偶数位需要右移1位,而我们是按照从左往右的顺序输出,所以将第一个偶数位当成最后一个来输出,最后一个当成第一个来输出
  2. 位数是从0开始数,奇数是31到 1每次移动两个,偶数是从30到0每次移动两个
  3. 这里的输出只看位数不看符号位,符号位也输出
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.猜数字游戏
    • 1.1编写过程
    • 1.2完猜数字完整代码
  • 2.判定一个数字是否是素数
  • 3.打印1-1000的所有素数
  • 4.输出闰年
  • 5.打印乘法口诀表
  • 6.求两个正整数的最大公约数
  • 7. 水仙花数
  • 8.写一个函数返回参数二进制中 1 的个数
  • 9.数字中9出现的个数
  • 10.计算表达式的值
  • 11.求二进制奇偶序列
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档