很多人在自学java的时候看一遍视频,感觉就会了,课后并没有大量的练习来巩固当前所学的知识点,今天给大家整理了一些非常具有代表意义的题。
Java基础类型题
1、反转一个只有3位数的整数。
从控制台输入321,输出123
2、将一个字符由小写字母转换为大写字母。
从控制台输入 a ,输出A
3、从控制台输入一个字符串,由字母组成,转换成大写后输出。
如果输入的是小写,就转换成大写。
如果输入的是大写,就转换成小写
例如输入:abCd ,控制台输入 ABcD
4、输入三个整数x,y,z,请把这三个数由小到大输出。
例如输入:1,3,2 输出 1,2,3
5、判断101-200之间有多少个素数,并输出所有素数。
6、利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
7、输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数。
例如输入 Ab12 sd
输出字母:4,空格1个,数字2个,这里的数字按0到9算,12是1和2不是12
8、打印出如下图案(菱形)
* *** ****** ******** ****** *** *
* *** ***** ******* *********
* ** *** **** *****
* ** *** **** ***** **** *** ** *
* * * * * * * * * * * * * * * *
9、给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
10、求一个3*3矩阵对角线元素之和。
11、有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
12、将一个数组逆序输出。
13、取一个整数a从右端开始的4~7位。
14、输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
15、计算字符串中子串出现的次数。
16、有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件"stud"中。
17、编写程序,从键盘输入一个 0~99999 之间的任意数,判断输入的数是几位数?
18、用 while 循环,计算 1~200 之间所有 3 的倍数之和。
19、已知 XYZ+YZZ=532,其中,X、Y、Z 为数字,编程求出 X、Y 和 Z 的值。
20、写一个猜拳游戏,从控制台输入石头、剪刀、布,后台随机生成对应和输入的做比较,看看谁能赢,输,和平局。
基础算法题
打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。(例如: 153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。)
将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?(完全平方数 :如果一个正整数 a 是某一个整数 b 的平方 .0也是完全平方数)
输出9*9口诀。
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天 剩下的一半零一个。 到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数。完数的意思是将所有因数加起来的和等于这个数.比如28= 1+2+4+7+14
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
输入两个正整数m和n,求其最大公约数和最小公倍数。
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。输出结果的形式如:2+22+222=246;
一球从h米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第n次落地时,共经过多少米?第n次反弹多高?程序分析:反弹的高度:(1/2)的n次方*h
利用递归方法求5!。
有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大。
一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
809*??=800*??+9*??+1,其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
一个偶数总能表示为两个素数之和。
某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
输入 3 个正数,判断能否构成一个三角形。
编写程序解决“百钱买百鸡”问题。公鸡五钱一只,母鸡三钱一只,小鸡一钱三只,现有百钱欲买百鸡,共有多少种买法?
验证“鬼谷猜想”:对任意自然数,若是奇数,就对它乘以 3 再加 1;若是偶数,就对它除以 2,这样得到一个新数,再按上述计算规则进行计算,一直进行下去,最终必然得到 1。
面向对象练习题
1、设计2个类,要求如下:(知识点:类的继承 方法的覆盖) [必做题]
• 2.1 定义一个汽车类Vehicle,
• 2.1.1 属性包括:汽车品牌brand(String类型)、颜色color(String类型)和速度speed(double类型)。
• 2.1.2 至少提供一个有参的构造方法(要求品牌和颜色可以初始化为任意值,但速度的初始值必须为0)。
• 2.1.3 为属性提供访问器方法。注意:汽车品牌一旦初始化之后不能修改。
• 2.1.4 定义一个一般方法run(),用打印语句描述汽车奔跑的功能
• 2.1.5 在main方法中创建一个品牌为―benz‖、颜色为―black‖的汽车。
• 2.2 定义一个Vehicle类的子类轿车类Car,要求如下:
• 2.2.1 轿车有自己的属性载人数loader(int 类型)。
• 2.2.2 提供该类初始化属性的构造方法。
• 2.2.3 重新定义run(),用打印语句描述轿车奔跑的功能。
• 2.2.4 在main方法中创建一个品牌为―Honda‖、颜色为―red‖,载人数为2人的轿车。
2、 Cola公司的雇员分为以下若干类:(知识点:多态) [必做题]
• 4.1 ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100 元。
• 4.2 SalariedEmployee : ColaEmployee 的子类,拿固定工资的员工。属性:月薪
• 4.3 HourlyEmployee :ColaEmployee 的子类,按小时拿工资的员工,每月工作超出160 小时的部分按照1.5 倍工资发放。属性:每小时的工资、每月工作的小时数
• 4.4 SalesEmployee :ColaEmployee 的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率
• 4.5 定义一个类Company,在该类中写一个方法,调用该方法可以打印出某月某个员工的工资数额,写一个测试类TestCompany,在main方法,把若干各种类型的员工放在一个ColaEmployee 数组里,并单元出数组中每个员工当月的工资。
3、编写三个系别的学生类:英语系,计算机系,文学系(要求通过继承学生类) [选做题]
• 6.1各系有以下成绩:
• 英语系: 演讲,期末考试,期中考试;
• 计算机系:操作能力,英语写作,期中考试,期末考试;
• 文学系: 演讲,作品,期末考试,期中考试;
• 6.2各系总分评测标准:
• 英语系: 演讲 50%
• 期末考试 25%
• 期中考试 25%
• 计算机系: 操作能力 40%
• 英语写作 20%
• 期末考试 20%
• 期中考试 20%
• 文学系: 演讲 35%
• 作品 35%
• 期末考试 15%
• 期中考试 15%
• 6.3定义一个可容纳5个学生的学生类数组,使用随机数给该数组装入各系学生的对象,然后按如下格式输出数组中的信息:
• 学号:XXXXXXXX 姓名:XXX 性别:X 年龄:XX 综合成绩:XX
要求编写一个Java应用程序:
(1)编写一个矩形类Rect,包含:
两个protected属性:矩形的宽width;矩形的高height。
两个构造方法:
1.一个带有两个参数的构造方法,用于将width和height属性初化;
2.一个不带参数的构造方法,将矩形初始化为宽和高都为10。
两个方法:
求矩形面积的方法area()
求矩形周长的方法perimeter()
(2)通过继承Rect类编写一个具有确定位置的矩形类PlainRect,其确定位置用
矩形的左上角坐标来标识,包含:
添加两个属性:矩形左上角坐标startX和startY。
两个构造方法:
带4个参数的构造方法,用于对startX、startY、width和height属性初始化;
不带参数的构造方法,将矩形初始化为左上角坐标、长和宽都为0的矩形;
添加一个方法:
判断某个点是否在矩形内部的方法isInside(double x,double y)。如在矩
形内,返回true, 否则,返回false。
提示:点在矩形类是指满足条件:
x>=startX&&x<=(startX+width)&&y
(3)编写PlainRect类的测试程序
创建一个左上角坐标为(10,10),长为20,宽为10的矩形对象;
计算并打印输出矩形的面积和周长;
判断点(25.5,13)是否在矩形内,并打印输出相关信息。
类的成员变量 猜数字游戏一个类A有一个成员变量v有一个初值100。定义一个类对A类的成员变量v进行猜。如果大了则提示大了小了则提示小了。等于则提示猜测成功。
类的成员变量 请定义一个交通工具(Vehicle)的类其中有: 属性速度(speed)体积(size)等等 方法移动(move())设置速度(setSpeed(int speed))加速speedUp(),减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象并通过方法给它初始化speed,size的值并且通过打印出来。另外调用加速减速的方法对速度进行改变。
构造方法 编写Java程序模拟简单的计算器。 定义名为Number的类其中有两个整型数据成员n1和n2应声明为私有。编写构造方法赋予n1和n2初始值再为该类定义加addition、减subtration、乘multiplication、除division等公有成员方法分别对两个成员变量执行加、减、乘、除的运算。 在main方法中创建Number类的对象调用各个方法并显示计算结果。
构造方法 编写Java程序用于显示人的姓名和年龄。 定义一个人类Person该类中应该有两个私有属性姓名name和年龄age。定义构造方法用来初始化数据成员。再定义显示display方法将姓名和年龄打印出来。 在main方法中创建人类的实例然后将信息显示。
定义一个点类Point,包含2个成员变量x、y分别表示x和y坐标,2个构造器Point()和Point(intx0,y0),以及一个movePoint(int dx,int dy)方法实现点的位置移动,创建两个Point对象p1、p2,分别调用movePoint方法后,打印p1和p2的坐标
设计一个类Student,该类包括姓名、学号和成绩。设计一个方法,按照成绩从高到低的顺序输出姓名、学号和成绩信息
定义两个类,描述如下: [必做题]
• 定义一个人类Person:
• 定义一个方法sayHello(),可以向对方发出问候语“hello,my name is XXX”
• 有三个属性:名字、身高、体重
• 定义一个PersonCreate类:
• 创建两个对象,分别是zhangsan,33岁,1.73;lishi,44,1.74
• 分别调用对象的sayHello()方法。
定义两个类,描述如下: [必做题]
• 定义一个人类Person:
• 定义一个方法sayHello(),可以向对方发出问候语“hello,my name is XXX”
• 有三个属性:名字、身高、体重
• 通过构造方法,分别给三个属性赋值
• 定义一个Constructor类:
• 创建两个对象,分别是zhangsan,33岁,1.73;lishi,44,1.74
• 分别调用对象的sayHello()方法。
集合练习题
1、创建一个ArrayList集合,输入10个数,将数从大到小输出,从小到大输出,随机输出。
2、已知有两个容器List,第一个List装有【小编,小王】,第二个容器装有【95分,94分】,请把第二个容器的94分改成95分,通过迭代器在控制打印出:
小编:95分
小王:95分
3、创建一个HashMap,里边存有key:username,value:password,的用户密码信息,从控制台输入一个用户和密码,程序在后台判断用户名在map中是否存在,如果不存在,就提示用户名错误,用户正确,在判断当前用户名对应的密码是否和输入的一致,如果一致就提示用户密码正确.
4、有两个list集合,l1数据有1,2,3,4 l2数据有 2,3,4,5, 将两个集合中重复的数据移除,并且把不重复的添加到第三个l3集合里边。
5、创建一个List集合,里边有20组数据,在创建一个Map,把List中下标为0的作为map的key,下标为list.length()-1的为map的value,依次类推,最后在控制台打印出map所对应的key和value。
6、创建一个Map集合,里边有10组数据,假如key为1到10,value为11到20,从控制台接受1到20之间的数,程序后台判断map中key和value有没有对应的,如果有提示当前数字为key,对应的值是多少,如果是值匹配上了,提示匹配到值为xx,对应的key为yy。
7、有如下需求,中国队,美国队,日本队,每个国家队下面又有乒乓球,羽毛球,篮球,每个球类下面有第一组,第二组,第三组,每个组下面有教练,队员,教练和队员的信息有用户名和性别,年龄,职位。请根据以上的需求利用List和Map以及学的集合类的知识点来完成这道题目。
反射相关练习题
1、定义一个Java类,Person,属性有name、age,使用反射创建一个实例,调用构造函数初始化name和age,并且调用里边的sayHello()方法。
2、定义一个Java类,Person,通过反射把给里边所有的字段的赋值
3、通过反射调用main函数。
4、通过反射去创建对象,分别用Constructor和Class对象去创建
5、定义一个Person类,person类继承了Base类,通过反射去查看Person类继承了哪个类。
6、通过反射创建一个ArrayList对象,并且调用里边的方法添加一些数据,循环list,把对象打印到控制台。
线程相关练习题
1、有如下数组 int[] arr = {1,2,3,4,5,6,7,8,9,10},现有两个人进行抽签,A先抽签,B继续抽签,A继续抽签,依次类推,直到抽完为止,抽一次少一次,不能有重复的,用两个线程模拟两个人的抽签,随机抽签,把抽签的结果打印到控制台,记住,这里是用数组,不是集合来存取1到10。
2、某公司组织年会,会议入场时有两个入口,在入场时每位员工都能获取一张双色球彩票,假设公司有100个员工,利用多线程模拟年会入场过程,并分别统计每个入口入场的人数,以及每个员工拿到的彩票的号码。线程运行后打印格式如下:
编号为: 2 的员工 从后门 入场! 拿到的双色球彩票号码是: [17, 24, 29, 30, 31, 32, 07] 编号为: 1 的员工 从后门 入场! 拿到的双色球彩票号码是: [06, 11, 14, 22, 29, 32, 15] //..... 从后门入场的员工总共: 13 位员工 从前门入场的员工总共: 87 位员工
3、开启一个子线程循环3次,主线程循环3次,然后子线程循环3次,主线程循环3次,这样循环10次;
4、写一个买票的例子,模拟3个窗口同时买60张票。
5、利用多线程去扫描统计你的电脑D盘前5个文件目录,并且统计出来各个目录地下有多少目录和文件,并且目录的深度是多少,比如有D:/a/b/c/d 这个目录结构相对于a来说,他的深度是3,因为他下面有目录d。统计出a目录下面有多少个目录包括子目录,递归统计,有多少个文件,递归统计,各个文件的类型有多少个,比如,txt有10个,exe有2个等。要求使用5个线程,每个线程各统计一个目录。(综合性题)
正则表达式练习题
1、匹配一个手机号码是否正确,格式要求为11位或者7位座机号码,判断要严格缜密。
2、匹配一个邮箱号码,并且只有163,qq,126 这三种邮箱
3、匹配一个URL,分析URL的特性,并且效验是否正确
4、匹配密码的强度,要求包含至少一位大写,大小写和数字组合,不能出现任何特殊符号,比如Abc123Dcd是正确的
5、匹配一段文字里边是否包含中文,如果包含,报中文替换成*号,并且把替换后的在控制台打印出来
6、从控制台输入一个字符串,用正则效验是否为数字?
7、匹配一个字符串是否是日期格式,日期格式如下:2018-12-12 12:12:12 或者 2019/02/24 09:11:23 这两种格式
网络编程练习题
1、从网上下载一个图片到D:/xxx.mp3
2、http://www.duwenzhang.com/wenzhang/renshengzheli/ganwu/20130515/255476.html 把这篇文章的源码读取下来,利用正则表达式把文字部分匹配出来打印到控制台(选择题)
3、用Socket创建一个服务端和一个客户端,客户端发送一条消息到服务端,服务端收到后把消息原样回给客户端
2、在上面的基础上进一步改进,图片端发送个图片到服务端,服务端接受到保存到电脑的D:/yyy.jpg
3、在上面的基础上进一步改进,把图片的名字和图片本身转成的byte数组封装到对象里边,把对象传到服务端,服务端接受到后对对象进行解析,把图片保存到D盘下,图片名称用传过来的原图片名称。
4、写一个基于UDP客户端发送到服务端的例子
综合基础题(创作型题)
1、我们都知道StringBuilder是动态扩容的,根据他的这个特性,自己实现一个StringBuilder类。
2、写一个你认为最经典,最具有代表意义并且涵盖整个面向对象所有知识点的一道题。
以上部分题来自互联网,希望看到的人能够自己完成,对自己的学习负责,坚信自己的能力。
在这里说一下自己整理了一份关于java的系统化资料,从Javase- ssm-springcloud,包括了面试题,PDF电子书,网上商城项目,个人博客项目,分布式项目等都有睁开想学习Java或者转行,大学生都非常实用,无任何套路免费提供。加群自行下载,有问题都可以在里面交流