Java基础编程练习题

很多人在自学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、写一个猜拳游戏,从控制台输入石头、剪刀、布,后台随机生成对应和输入的做比较,看看谁能赢,输,和平局。

基础算法题

  1. 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。(例如: 153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。)
  2. 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5

  3. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

  4. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
    一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?(完全平方数 :如果一个正整数 a 是某一个整数 b 的平方 .0也是完全平方数)

  5. 输出9*9口诀。

  6. 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天 剩下的一半零一个。 到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

  7. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

  8. 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数。完数的意思是将所有因数加起来的和等于这个数.比如28= 1+2+4+7+14

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

  10. 输入两个正整数m和n,求其最大公约数和最小公倍数。

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

  12. 一球从h米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第n次落地时,共经过多少米?第n次反弹多高?程序分析:反弹的高度:(1/2)的n次方*h

  13. 利用递归方法求5!。

  14. 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大。

  15. 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

  16. 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

  17. 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

  18. 海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

  19. 809*??=800*??+9*??+1,其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。

  20. 一个偶数总能表示为两个素数之和。

  21. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

  22. 输入 3 个正数,判断能否构成一个三角形。

  23. 编写程序解决“百钱买百鸡”问题。公鸡五钱一只,母鸡三钱一只,小鸡一钱三只,现有百钱欲买百鸡,共有多少种买法?

  24. 验证“鬼谷猜想”:对任意自然数,若是奇数,就对它乘以 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<startY&&y>=(startY-height)

(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()方法。


JavaIO练习题

1、在D盘创建一个ss的目录,在ss下面创建一个s.txt文件,在文件里边写入Hello World。

2、把刚才s.txt文件读取到内存中,显示到控制台

3、统计s.txt中各个字符出现的次数,打印到控制台

4、把s.txt中大写转成小写,小写转成大写,空格转成下划线,在输入到文件中覆盖之前的。

5、从控制台输入一个路径,程序循环读取这个路径下有多少文件夹?多少文件?

6、拷贝一张图片从D盘到F盘、移动一张图片从D盘到F盘

7、使用随机文件流类RandomAccessFile将一个文本文件倒置读出

8、编写一个Java应用程序,可以实现Dos中的type命令,并加上行号。即将文本文件在控制台上显示出来,并在每一行的前面加上行号。

9、输入两个文件夹名称,将A文件夹内容全部拷贝到B文件夹,要求使用多线程来操作。

10、在控制台接受一个数字大小的类型,比如输入5M,或者5KB,查找统计出电脑D盘目录下小于5M的文件有多少个,或者小于5KB的大小有多少个文件。

11、在控制台输入2个mp3的路径,程序接受到后对两个mp3进行合成。合成后输出到D:/merge.mp3。

12、对上面题目进行稍加改动,从控制台接受至少两个mp3路径,输入q退出,程序对这些路径的mp3进行合成。

13、从网络下载一个图片到电脑的D盘(选做题)

14、对文件进行压缩

15,对一个文件夹进行压缩

集合练习题

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、写一个你认为最经典,最具有代表意义并且涵盖整个面向对象所有知识点的一道题。

 

文档未完,持续更新中。以上部分题来自互联网,希望看到的人能够自己完成,对自己的学习负责,坚信自己的能力。

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值