使用Java语言做几个小小练习题吧

简介: 使用Java语言做几个小小练习题吧

对于Java语言,笔者刚刚入门!但是,也酝酿了许久!今日,打算发一篇小小的练习题:由Java语言实现(初级),特别简单,在C语言初级阶段,笔者都已经见识过,做过了!!表示,小白合适的练习题!!


判断一个数字是不是素数(排除1和负数)三种方法求解

求出1到100之间的所有素数!

输出乘法口诀(可以指定乘法口诀的大小)!

求两个数字的最大公约数(辗转相除法)!

求出0到999之间的所有“水仙花数”,并输出!

求出某个数中二进制1的个数!!(三种方法)

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

编写程序,数一下:1到100之间的所有整数中,出现多少个数字9!(此时99算两个!)

判断1到100之间有多少个数字里面有9!(此时99算一个!)

打印X图形!(随机定义大小)

对于上述的练习题,笔者有的个别题目涉及到了多种方法!!请大家仔细辨别!!


注意,本文笔者创建了一个文件名,叫做:Add.java  !请大家不要弄混肴!!要保持文件名与类名一致!


0a2653c851af460fa595bd959398a8f1.png


1.判断一个数字是不是素数(排除1和负数)三种方法求解


判断一个数字是不是素数,我们可以根据素数的定义来进行!(方法1)


请看笔者的代码:


import java.util.Scanner;
public class Add {
    public static void main(String[] args) {
        Scanner scanner =new Scanner(System.in);
        int n = scanner.nextInt();
        int i=2;
        for(i=2;i<n;i++) {
            if(n%i==0) {
                //System.out.println(n+"不是素数!");
                break;
            }
        }
        if(i==n) {
            System.out.println(n+"是素数!");
        }
    }
}


上述代码的运行结果为:


2d65d23f6d4748949b924e4057485923.png


方法2:


其实对于一个数字n 可以写成n=a*b的形式!!


对于:16这个数字而言!16=1*16,  16=2*8;   16=4*4!


因此,我们发现对于一个数字n,一定会有一个数字小于等于n/2是n的因数!


import java.util.Scanner;
public class Add {
    public static void main(String[] args) {
        Scanner scanner =new Scanner(System.in);
        int n = scanner.nextInt();
        int i=2;
        for(i=2;i<n;i++) {
            if(n%i==0) {
                //System.out.println(n+"不是素数!");
                break;
            }
        }
        if(i==n) {
            System.out.println(n+"是素数!");
        }
    }
}


注意一下区别!!仅仅更改了部分代码!!


方法3!!


其实对于一个数字n 可以写成根号的形式!!


对于:16这个数字而言!16=1*16,  16=2*8;   16=4*4!


因此,我们发现对于一个数字n,一定会有一个数字小于等于根号n的!


import java.util.Scanner;
public class Add {
    public static void main(String[] args) {
        Scanner scanner =new Scanner(System.in);
        int n = scanner.nextInt();
        int i=2;
        for(i=2;i<=Math.sqrt(n);i++) {
            if(n%i==0) {
               // System.out.println(n+"不是素数!");
                break;
            }
        }
        if(i>Math.sqrt(n)) {
            System.out.println(n+"是素数!");
        }
    }
}


2.求出1到100之间的所有素数!


import java.util.Scanner;
public class Add {
    public static void main(String[] args) {
        Scanner scanner = new Scanner((System.in));
        int n = scanner.nextInt();
        for (int j =1; j<=n; j++) {
            int i=2;
            for (i=2;i<=Math.sqrt(j);i++) {
                if(j%i==0) {
                    break;
                }
            }
            if(i>Math.sqrt(j)) {
                System.out.println(j+"是素数!");
            }
        }
    }
}


上述代码的运行结果为:


6de278e6d6694ce5bb08e7e842b7e74b.png


3.输出乘法口诀(可以指定乘法口诀的大小)!


import java.util.Scanner;
public class Add {
    public static void main(String[] args) {
        Scanner scanner = new Scanner((System.in));
        int n = scanner.nextInt();
        for(int i=1;i<=n;i++) {
            for(int j=0;j<=i;j++) {
                System.out.print(i+"*"+j+"="+i*j+"  ");
            }
            System.out.println();
        }
    }
}

代码的运行结果为:


12c3b7f3f8814309a195c64f051d4445.png


4.求两个数字的最大公约数(辗转相除法)!


import java.util.Scanner;
public class Add {
    public static void main(String[] args) {
        Scanner scanner = new Scanner((System.in));
        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);
    }
}


代码的运行结果为:


34e8d716411043c08c7ffba9fbba23de.png


5. 求出0到999之间的所有“水仙花数”,并输出!


对于得到水仙花数,我们主要有两个难点!(以153为例!)


如何获得每一位数字??

如何获得这个数字是几位数??


import java.util.Scanner;
public class Add {
    public static void main(String[] args) {
        Scanner scanner = new Scanner((System.in));
        int n = scanner.nextInt();
        for (int i = 0; i < n ; i++) {
            //判断是几位数?
            int count=0;
            int tmp=i;
            while(tmp!=0) {
                count++;
                tmp=tmp/10;
            }
            //此时tmp为0;但是i不为0
            tmp = i;
            int sum=0;
            while(tmp!=0) {
                sum+=Math.pow(tmp%10,count);
                tmp=tmp/10;
            }
            if(sum==i) {
                System.out.println(i);
            }
        }
    }
}


代码的运行结果为:


92ba0822ed0b46e1ae72df8a17d3a45b.png


6.求出某个数中二进制1的个数!!(三种方法)


方法1:


假设该数字为15:二进制中含有4个1


import java.util.Scanner;
public class Add {
    public static void main(String[] args) {
        Scanner scanner = new Scanner((System.in));
        int n = scanner.nextInt();
        int count=0;
        for (int i = 0; i < 32; i++) {
            if(((n>>>i)&1)!=0) {
                count++;
            }
        }
        System.out.println(count);
    }
}


代码的运行结果为:


d79b274929334152a6d38be91e2d1be3.png


上述代码中:if(((n>>>i)&1)!=0)  : 无符号右移!!可以解决负数死循环的问题!!当输入的数字为负数的时候,符号数为1,右移以后,增添1,然后会导致死循环!!


对于上述的代码,如果输入的数字很小,但是也会运行32次!!所以显得有点浪费循环的次数!!


方法2:


import java.util.Scanner;
public class Add {
    public static void main(String[] args) {
        Scanner scanner = new Scanner((System.in));
        int n = scanner.nextInt();
        int count=0;
        while(n!=0) {
            if((n&1)!=0) {
                count++;
            }
            n=n>>>1;
        }
        System.out.println(count );
    }
}


方法3:


import java.util.Scanner;
public class Add {
    public static void main(String[] args) {
        Scanner scanner = new Scanner((System.in));
        int n = scanner.nextInt();
        int count=0;
        while(n!=0) {
            n=n&(n-1);
            count++;
        }
        System.out.println(count );
    }
}

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


该问题主要在于:判断一个数的二进制中是1还是0就可以了!因此,可以按位与一个1就可以求出!


从右往左数!!


import java.util.Scanner;
public class Add {
    public static void main(String[] args) {
        Scanner scanner = new Scanner((System.in));
        int n = scanner.nextInt();
        System.out.println("偶数位:");
        for (int i = 31; i >=1; i=i-2) {
            System.out.print(((n>>i)&1)+" ");
        }
        System.out.println();
        System.out.println("奇数位:");
        for (int i = 30; i >=0; i=i-2) {
            System.out.print(((n>>i)&1)+" ");
        }
    }
}


代码的运行结果为:


d79b274929334152a6d38be91e2d1be3.png


8.编写程序,数一下:1到100之间的所有整数中,出现多少个数字9!(此时99算两个!)


public class Add {
    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);
    }
}


代码的运行结果为:


dfc80ca9d8004e6c9ddc00e8448ffc6a.png


9.判断1到100之间有多少个数字里面有9!(此时99算一个!)


import java.util.Scanner;
public class Add {
    public static void main(String[] args) {
       int count=0;
       for(int i=0;i<=100;i++) {
           if(i%10==9) {
               count++;
           } else if(i/10==9) {
               count++;
           }
       }
        System.out.println(count);
    }
}


代码的运行结果为:


0a2653c851af460fa595bd959398a8f1.png


10.打印X图形!(随机定义大小)


import java.util.Scanner;
public class Add {
    public static void main(String[] args) {
        Scanner scanner = new Scanner((System.in));
        int n = scanner.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();
        }
    }
}


代码的运行结果为:


2d65d23f6d4748949b924e4057485923.png


相关文章
|
5月前
|
人工智能 安全 Java
智慧工地源码,Java语言开发,微服务架构,支持分布式和集群部署,多端覆盖
智慧工地是“互联网+建筑工地”的创新模式,基于物联网、移动互联网、BIM、大数据、人工智能等技术,实现对施工现场人员、设备、材料、安全等环节的智能化管理。其解决方案涵盖数据大屏、移动APP和PC管理端,采用高性能Java微服务架构,支持分布式与集群部署,结合Redis、消息队列等技术确保系统稳定高效。通过大数据驱动决策、物联网实时监测预警及AI智能视频监控,消除数据孤岛,提升项目可控性与安全性。智慧工地提供专家级远程管理服务,助力施工质量和安全管理升级,同时依托可扩展平台、多端应用和丰富设备接口,满足多样化需求,推动建筑行业数字化转型。
204 5
|
2月前
|
监控 Java API
Java语言按文件创建日期排序及获取最新文件的技术
这段代码实现了文件创建时间的读取、文件列表的获取与排序以及获取最新文件的需求。它具备良好的效率和可读性,对于绝大多数处理文件属性相关的需求来说足够健壮。在实际应用中,根据具体情况,可能还需要进一步处理如访问权限不足、文件系统不支持某些属性等边界情况。
186 14
|
3月前
|
Java 编译器 应用服务中间件
为什么说 Java 语言编译与解释并存的原因
在编程语言的世界里,Java以其独特的“编译与解释并存”特性独树一帜。这一特性不仅赋予了Java强大的跨平台能力,还使其在性能和灵活性上达到了很好的平衡。接下来,我们将深入探讨Java语言这一特性的本质、原理以及在实际应用中的体现。
86 6
|
2月前
|
JSON JavaScript 前端开发
Python+JAVA+PHP语言,苏宁商品详情API
调用苏宁商品详情API,可通过HTTP/HTTPS发送请求并解析响应数据,支持多种编程语言,如JavaScript、Java、PHP、C#、Ruby等。核心步骤包括构造请求URL、发送GET/POST请求及解析JSON/XML响应。不同语言示例展示了如何获取商品名称与价格等信息,实际使用时请参考苏宁开放平台最新文档以确保兼容性。
|
3月前
|
分布式计算 Java 大数据
Java 语言基础概念与常识之主要特点解析
Java是一种广泛应用于企业级开发、移动应用(如Android)、大数据处理及云计算等领域的编程语言。其核心特点包括跨平台性(一次编写,到处运行)、面向对象设计、自动垃圾回收、多线程支持和高性能表现。Java通过JVM实现跨平台,具备强大的健壮性和安全性,同时拥有丰富的标准库与活跃的开发者社区。本文深入解析Java的技术优势及其在电商系统、大数据处理和云计算中的实际应用,并提供相关面试资料供学习参考。
124 0
|
3月前
|
网络协议 安全 Java
实现Java语言的文件断点续传功能的技术方案。
像这样,我们就完成了一项看似高科技、实则亲民的小工程。这样的技术实现不仅具备实用性,也能在面对网络不稳定的挑战时,稳稳地、不失乐趣地完成工作。
236 0
|
7月前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
790 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
6月前
|
存储 Java 数据安全/隐私保护
Java语言位运算符详解
Java语言提供了7种位运算符:按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(&lt;&lt;)、带符号右移(&gt;&gt;)和无符号右移(&gt;&gt;&gt;)。这些运算符主要用于对long、int、short、byte和char类型的数据进行二进制位级别的操作,不能用于double、float和boolean类型。文中详细讲解了每种运算符的规则和应用场景,并指出位运算在实际开发中有重要应用价值,不仅限于面试。
293 2
|
7月前
|
缓存 Java 应用服务中间件
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
1316 5
|
6月前
|
Java 开发者
课时2:Java语言特点
课时2介绍了Java语言的多个关键特性。作为开源且半开源的产品,Java成为通用技术标准,拥有透明的开发环境。其面向对象的设计、自动内存回收、简化指针处理(使用引用)、支持多线程编程、高效的网络处理能力(如NIO)及良好的可移植性,共同促成了Java的强大生态系统和广泛应用。