《Java练习题》Java习题集

Java基础50道经典练习题(22年新版) Java的基础练习。 阅读详情

程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?

 

import java.util.Scanner;

/**
 * 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
 * 分析 一月 1对, 2月 1对,3月 2对,4月 3对,5月5对,6月8对,7月13对,8月 21只
 */
public class Subject1 {

    public static void main(String[] args) {
        System.out.print("请输入你想知道的兔子数量的月份:");

        Scanner scanner=new Scanner(System.in);

        int n=scanner.nextInt();//获取输入的整数

        System.out.println(test(n));

        System.out.println(fun(n));

        scanner.close();
    }

    /**
     * 菜鸟写法
     * @param i
     * @return
     */
    public static int test(int i){
        int tot = 0;
        int a = 0;
        int b = 1;
        for(int j = 0;j<i; j++){
            tot = a+b;
            a = b;
            b = tot;
        }
        return a;
    }

    /**
     * 大神写法
     * @param
     * @return
     */
    private static int fun(int n){
        if(n==1 ||n==2)
            return 1;
        else
            return fun(n-1)+fun(n-2);
    }
}

 

运行结果:

【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数。

/**
 * 【程序2】
 *  题目:判断101-200之间有多少个素数,并输出所有素数。
 *
 *  分析:什么是素数,不能被自己和1整除的数。
 */
public class Subject2 {
    public static void main(String[] args) {
        getPrimeNumber(101,200);
    }

    /**
     * 判断a和b之间有多少个素数
     * @param a
     * @param b
     */
    public static void getPrimeNumber(int a,int b){
        int sum = 0;
        if(a >= b){
            System.out.println("a不能大于等于b!");
        }
        System.out.print("素数:");
        for(int i=a;i<=b;i++){
            if(isPrimeNumber(i)){
                sum += 1;
                System.out.print(i+" ");
            }
        }
        System.out.println();
        System.out.println("存在素数数量:"+sum);
    }

    /**
     * 判断num是否是一个素数
     * @param i
     * @return
     */
    private static boolean isPrimeNumber(int i) {
        boolean flag = true;
        for(int j=2;j <= i/2;j++){
            if(i%j == 0){
                flag = false;
                break;
            }
        }
        return flag;
    }
}

 

运行结果:

【程序3】
题目:打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

 

/***
 * 【程序3】
 * 题目:打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
 */
public class Subject3 {
    public static void main(String[] args) {
        for(int i= 100 ; i<=999;i++){
            if(isNarcissus(i)){
                System.out.println("水仙花数:"+i);
            }
        }
    }

    public static boolean  isNarcissus(int a){

        int num1 = 0;  //个位
        int num2 = 0;  //十位
        int num3 = 0;  //百位
        num3 = a/100;
        num2 = (a - num3*100)/10;
        num1 = a - num3*100 - num2*10;

        if(Math.pow(num1,3) + Math.pow(num2,3) + Math.pow(num3,3) ==a){
            return true;
        }
        return false;
    }
}

运行结果:

【程序4】
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

/**
 * 【程序4】
 * 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
 */
public class Subject4 {
    public static void main(String[] args) {
        System.out.print("请输入需要分解因数的整数:");
        Scanner scanner=new Scanner(System.in);
        int a = scanner.nextInt();//获取输入的整数
        decompose(a);
    }

    /**
     * 分解质因数
     * @param num
     * @return
     */
    public static void decompose(int num){
        int tmp = num/2;
        for(int i=2;i <= tmp ;i++){
            if(num%i == 0){
                num = num/i;
                System.out.println("质因数为:"+i);
                i=1;
                continue;
            }
        }
    }
}

 

运行结果:

【程序5】
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

/**
 * 【程序5】
 * 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
 */
public class Subject5 {
    public static void main(String[] args) {
        System.out.println("请输入学生成绩:");
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        String result = a>=90? "A" :  (60<=a && a<90? "B" :"C");
        System.out.println("该学生的最终评级为:"+result);
    }
}

运行结果:

【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

 

import java.util.Scanner;

/**
 * 【程序6】
 * 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
 */
public class Subject6 {
    public static void main(String[] args) {
        System.out.println("请输入第一个正整数:");
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        System.out.println("请输入第二个正整数:");
        int b = scanner.nextInt();
        int maxCommonDivisor = maxCommonDivisor(a,b);
        System.out.println("最大公约数:"+ maxCommonDivisor);
        int minCommonMultiple = (a*b)/maxCommonDivisor;
        System.out.println("最小公倍数:"+ minCommonMultiple);
        scanner.close();
    }

    /**
     * 获取num1和num2的最大公约数
     * @param num1
     * @param num2
     * @return
     */
    public static int maxCommonDivisor(int num1,int num2){
        int result = 1;
        int tmp = num1>num2? num2 :num1;
        for (int i = 2; i <= tmp; i++) {
            if(num1%i == 0 && num2%i == 0){
                result = i*result;
                num1 = num1/i;
                num2 = num2/i;
                i=1;
            }
        }
        return result;
    }
}

 

运行结果:

【程序7】
题目:输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数。

import java.util.Scanner;

/**
 * 【程序7】
 * 题目:输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数。
 */
public class Subject7 {
    public static void main(String[] args) {
        System.out.println("请输入字符串:" );
        Scanner scanner=new Scanner(System.in);
        scanner.useDelimiter("\n");
        String tmpStr = scanner.next();
        classify(tmpStr);
    }

    public static void classify(String str){
        char[] strArr = str.toCharArray();
        int num1 = 0;  //字母
        String num1Str = "";
        int num2 = 0;  //数字
        String num2Str = "";
        int space = 0; //空格
        String spaceStr = "";
        int other = 0; //其他
        String otherStr = "";
        for (int i = 0; i < strArr.length ; i++) {
            int ascii = (int)strArr[i];
            if( 48<= ascii && ascii <= 57){
                num2 = num2 + 1;
                num2Str = num2Str +strArr[i] +" ";
            }else if(ascii == 32){
                space = space +1;
            }else if((65<= ascii && ascii <= 90) || (97 <= ascii && ascii <=  122)){
                num1 = num1 + 1;
                num1Str = num1Str +strArr[i] +" ";
            }else{
                other = other + 1;
                otherStr = otherStr +strArr[i] +" ";
            }
        }
        System.out.println("存在字母个数:" + num1);
        System.out.println("存在字母如下:" + num1Str);

        System.out.println("存在数字个数:" + num2);
        System.out.println("存在数字如下:" + num2Str);

        System.out.println("存在空格个数:" + space);

        System.out.println("存在其他个数:" + other);
        System.out.println("存在其他如下:" + otherStr);

    }
}

 

运行结果:

【程序8】
题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。输出结果的形式如:2+22+222=246;

 

import java.math.BigDecimal;
import java.util.Scanner;

/**
 * 【程序8】
 * 题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。输出结果的形式如:2+22+222=246;
 */
public class Subject8 {
    public static void main(String[] args) {
        System.out.println("请输入数字1(小于10):" );
        Scanner scanner=new Scanner(System.in);
        int a = scanner.nextInt();
        System.out.println("请输入数字2(1-10):" );
        int b = scanner.nextInt();
        sum(a,b);
    }

    /**
     * 求和
     * @param num1
     * @param num2
     */
    public static void sum(int num1,int num2) {
        String numStr = "";
        String result = "";
        BigDecimal bigDecimal = new BigDecimal("0");
        for(int i=0;i< num1; i++ ){
            numStr = numStr+num2;
            if(i==0){
                result = result+numStr;
            }else{
                result = result+"+"+numStr;
            }
            bigDecimal = bigDecimal.add(new BigDecimal(numStr));
        }
        result = result +"=" +bigDecimal.toString();
        System.out.println("结果:"+result);
    }
}

 

运行结果:

 

【程序9】
题目:一个数如果恰好等于它的因子之和,这个数就称为”完数”。例如6=1+2+3.编程找出1000以内的所有完数。

 

import java.util.ArrayList;
import java.util.List;

/***
 * 【程序9】
 * 题目:一个数如果恰好等于它的因子之和,这个数就称为”完数”。例如6=1+2+3.编程找出1000以内的所有完数。
 */
public class Subject9 {
    public static void main(String[] args) {
        for (int i = 0; i <1000 ; i++) {
            perfectNum(i);
        }
    }

    /**
     * 判断是否是完数
     */
    public static void perfectNum(int num){
        List<Integer> list = decompose(num);
        int sum = 0;
        for(int i :list){
            sum = sum + i;
        }
        if(num == sum && num != 1){
            System.out.println("完数:"+num);
        }
    }

    /**
     * 分解质因数
     * @param num
     * @return
     */
    public static List decompose(int num){
        List<Integer> list = new ArrayList();
        list.add(1);
        int tmp = num/2;
        for(int i=2;i <= tmp ;i++){
            if(num%i == 0){
                list.add(i);
                continue;
            }
        }
        return list;
    }
}

 

运行结果:

【程序10】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;n次落地经过路线总长度和下次反弹的高度。

 

import java.util.Scanner;

/**
 * 【程序10】
 * 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;n次落地经过路线总长度和下次反弹的高度。
 */
public class Subject10 {

    public static void main(String[] args) {
        System.out.println("请选择第几次落地:");
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        sumLength(n);
    }

    public static void sumLength(int n){
        double height = 100;
        double sumLength = 0;
        for(int i=1; i<=n; i++){
            if(i==1){
                sumLength = sumLength + height;
            }else{
                sumLength = sumLength + height*2;
            }
            height = height/2;
        }
        System.out.println("总运动距离为:"+sumLength);
        System.out.println("反弹高度为:"+height);
    }
}

 

运行结果:

一时没有看懂也不要灰心,毕竟我也是用了不少的时间才弄懂的。不懂的话可以多看几遍,或者可以加下小编的V:K15197783918,和小伙们一起交流。

50道编程题(有精力的同学看看) 50道JAVA基础编程练习题 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... public class Prog1{        public static void main(S 阅读详情

相关推荐

新手java练习题100(1-5)

新手java练习题100(1-5) 1、编程实现:根据以下函数关系,对输入的X值计算输出对应的y值。 x的值 对应y的值 x&amp;amp;amp;lt;0 0 0&amp;amp;amp;lt;=x&amp;amp;amp;lt;10 x 10&amp;amp;amp;lt;=x&amp;amp;amp;lt;20 0.5*x+18 x&amp;amp;amp;gt;=20 10

红宝石的技术博客 2万+

Java练习题(经典8题)

Java经典题(硬币,鸡兔,质数,公约数,公倍数,乘法表,二维数组,水仙花数)

weixin_60629460的博客 9329

OnePlus救砖指南:线刷包与OTA全量包实战解析

本文详细解析了OnePlus手机救砖的两种核心方法:线刷包与OTA全量包。针对手机变砖的不同状况(如黑屏、能进Recovery等),文章提供了清晰的判断标准和对应的实战操作指南。重点阐述了线刷包作为终极救砖手段的底层原理与详细步骤,并对比了OTA全量包作为温和修复方案的使用场景与卡刷流程,旨在帮助用户安全、有效地恢复手机系统。

weixin_28312391的博客 1318

Java基础50道经典练习题

一、基础问答15题 1、【基本概念问答】 请问Java语言是跨平台的吗?JVM是跨平台的吗?为什么?答:Java语言是跨平台的,JVM是不跨平台的。Java能跨平台正是以JVM不跨平台为代价的。Java的跨平台性由JVM实现,即JVM用于保证java的跨平台的特性。原理分析:JVM是在机器和编译程序之间加入的一层抽象的虚拟机器,这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由 解释器 来将虚拟机代码转换为特定系统的机器码执行。在Java中

Code Writers 9429

手把手教会你用yolov8从环境配置到检测任务实战

做本文章前,我浏览过很多网上资料,我发现他们总是写的含糊不清,而且实际操作起来就会有各种各样的问题,要么就是根本不适合一些小白,所以我在这里写一篇完全针对小白的yolo从入门到实战。看完本文章后大家都可以实现下图效果,数字识别是一种比较简单的检测任务,其他识别任务学完本例也能够一通百通,大家边做边学,更好的体会yolo的神奇之处。

KevenDuan的博客 2871

普冉PY32F003定时器实战:从HSE时钟配置到500ms精准闪烁LED(附完整代码)

本文详细解析了普冉PY32F003单片机定时器的实战应用,从HSE时钟配置到实现500ms精准LED闪烁。通过完整的代码示例和深入的技术分析,帮助开发者掌握定时器参数计算、中断优先级管理及调试技巧,适用于各类嵌入式开发项目。

weixin_30608503的博客 451

java习题集_《Java练习题》Java习题集三

【程序21】题目:求1+2!+3!+…+20!的和【程序22】题目:利用递归方法求5!。/*** 【程序21】* 题目:求1+2!+3!+…+20!的和* 【程序22】* 题目:利用递归方法求5!。*/public classSubject21And22 {public static voidmain(String[] args) {long sum = factorialSum(20);Syst...

weixin_36108913的博客 213

BrainVision Recorder 和 BrainVision Analyzer 2.2 安装

本篇为《EEG处理》系列博客的第二篇,该系列博客主要记录EEG信号处理的学习过程中的软件安装和学习过程,方便以后查阅。本篇为BrainVision Recorder 和 BrainVision Analyzer 2.2 的安装过程。 BrainVision Recorder 和 BrainVision Analyzer 2.2 安装安装前奏Brain Vision Analyzer分析软件 安装Brain Vision Recorder记录软件 安装推荐几款个人使用的科研软件 安装前奏 Brain V

梁小憨憨的博客 5064

《java练习题》习题集二

Java总结:https://www.cnblogs.com/jssj/p/11146205.html 【程序11】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? /** * 【程序11】 * 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? */ public class Subject1...

weixin_30387663的博客 227

基于STM32L4XX、HAL库的RTL8211FSI-CG以太网收发器(PHY)驱动程序设计

一、简介:RTL8211FSI-CG是Realtek公司生产的一款高性能、低功耗的单端口10/100M以太网收发器(PHY)。它通过RMII(Reduced Media Independent Interface)或MII接口与MAC控制器连接。

zhusl6688的博客 531

Cadence OrCAD Capture 原理图中创建差分对约束的两种常用方法

本文介绍在原理图设计阶段,添加差分对的方法。

fydar的博客 3931

《java练习题》习题集四

【程序31】题目:取一个整数a从右端开始的4~7位。 import java.util.Scanner; /** * 【程序31】 * 题目:取一个整数a从右端开始的4~7位。 */ public class Subject31 { public static void main(String[] args) { Scanner sc...

weixin_30640769的博客 569

DISK配置服务器软RAID工作任务(RAID1+BITLOCKER)-winserver4

DISK配置服务器软RAID工作任务(RAID1+BITLOCKER)-winserver4

新时代先锋的博客 7299

《java练习题》习题集一

Java总结:https://www.cnblogs.com/jssj/p/11146205.html 【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? import java.util.Scanner; /** * 题目:古典问题:有一对兔子,从出生后第3个月...

weixin_30569033的博客 229

【数据集】中国陆地生态系统通量观测网 ChinaFLUX

【数据集】中国陆地生态系统通量观测网 ChinaFLUX

WW、forever的博客 190

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

java习题集,Java练习题集

1、古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三 个月后每个月又生一对兔子, 假如兔子都不死,问每个月的兔子总数为多少?这是一个菲波拉契数列问题public class No1 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print(...

weixin_29611239的博客 154

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

java练习册_《Java练习题》Java习题集二

【程序11】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?/*** 【程序11】* 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?*/public classSubject11 {public static voidmain(String[] args) {FormThreeNum();}public static voidF...

weixin_34394265的博客 287

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

《java练习题》习题集三

【程序21】题目:求1+2!+3!+…+20!的和 【程序22】题目:利用递归方法求5!。 /** * 【程序21】 * 题目:求1+2!+3!+…+20!的和 * 【程序22】 * 题目:利用递归方法求5!。 */ public class Subject21And22 { public static void main(String[] a...

weixin_30567471的博客 105

java题目_《Java练习题》Java习题集一

【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?importjava.util.Scanner;/*** 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?* 分析 一月 1对, 2月 1对,...

weixin_33589626的博客 310

java题集_《Java练习题》Java习题集四

【程序31】题目:取一个整数a从右端开始的4~7位。importjava.util.Scanner;/*** 【程序31】* 题目:取一个整数a从右端开始的4~7位。*/public classSubject31 {public static voidmain(String[] args) {Scanner scanner=newScanner(System.in);System.out.prin...

weixin_39848007的博客 282

赵小敏 java_清华大学出版社-图书详情-《Java程序设计实用教程习题集》

本书是《Java程序设计实用教程》的配套习题集。作者团队从2003年开始在浙江工业大学软件学院开设了Java程序设计课程,至今每年都为浙江工业大学计算机科学与技术学院、软件学院的本科生讲授Java程序设计及相关课程。在教学过程中,作者团队自行设计了大量习题,用来课堂讲解、课后作业和期末考试。习题的收集与编写经历了很长一段时间,习题集主要由高飞、赵小敏、陆佳炜、徐俊等设计与编写,其中部分是从参考文献...

weixin_36171481的博客 362

java程序设计练习题_Java程序设计习题集(含答案).doc

.PAGE.目 录TOC \o "1-1" \h \z 一、判断题 2二、选择题 4三、填空题 17四、写出下列程序完成的功能 25五、写出下面程序的运行结果 29六、使用Java语言编写程序 33七、简答题 34Java程序设计习题集一、判断题1.Java程序里,创建新的类对象用关键字new,回收无用的类对象使用关键字free。( F )2.有的类定义时可以不定义构造函数,所以构造函...

weixin_39665060的博客 664

《Java练习题》Java编程题合集(转载)

转载原网址为:https://www.cnblogs.com/jssj/p/12002760.html 初学者: 《Java练习题》习题集一 https://www.cnblogs.com/jssj/p/11147566.html 《Java练习题》习题集二 https://www.cnblogs.com/jssj/p/11222351.html 《Java练习题》习题集三 https://www.cnblogs.com/jssj/p/11260909.html 《Java练习题》习题...

胡广的比特星球 5501

Java学习练习题16:Java习题及代码16

Java学习练习题16: Java习题及代码16: 链接:https://pan.baidu.com/s/1qfamGKNGE_iofsin6QYn5Q 提取码:3bhb

SH_思寒的博客 730

Java学习练习题10:Java习题及代码10

Java学习练习题10: Java习题及代码10: 链接:https://pan.baidu.com/s/1gwohEMcNTyGi0_ZkVNO-pg 提取码:sjbs

SH_思寒的博客 1069

Java学习练习题19:Java习题及代码19

Java学习练习题19: Java习题及代码19: 链接:https://pan.baidu.com/s/1qxOmUITlJLI6TZ_fUzUnQg 提取码:dzxy

SH_思寒的博客 626
上一篇: 两道面试题,带你解析Java类加载机制
下一篇: java高级---->Java动态代理的原理
奇迹摘星w
博客等级 码龄6年 1844粉丝 189原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值