java、简单练习题

来源:互联网 发布:热门网络词汇 编辑:程序博客网 时间:2024/05/10 06:06

数组练习题:

1.随机给长度为10的数组赋值并进行排序。2.int[]arr={1,13,45,5,0,0,16,6,0,25,4,17,6,7,0,15};要求将以上数组中的0项去掉,将不为0的值存入一个新数组,生成新的数组:int[]newArr={1,13,45,5,16,6,25,4,17,6,7,15}; 3.写一个方法输入一个整型数组,要求打印出输入的数组所有元素之和,并打印出最大值和最小值。4.给一个二维数组赋值,并遍历这个数组。

面向对象:

1.狗类a)他们的共有特征有毛发颜色,体重,品种,狗龄,喜欢吃的食物;b)能跑,能叫(叫声“汪汪汪”)(使用System.out.print输出一句话就可以了),能跳;2.car类a)基本属性:颜色、重量、大小、里程、型号(全为非公开);b)此car可以左转、右转、向前、向后,还能播放我们喜欢的音乐;c)对外提供方法展示其基本属性;d)有相应的构造方法,并在被实例化的时候给以提示;f)在主方法中进行测试;3.point类要求:point为空间某个点,有自己的坐标,且提供方法计算此点到原点的距离,提供方法展示自己的坐标(x,y,z)。扩展一:空间有三个点,A、B、C,计算由这3点组成的三角形的周长。扩展二:如果有一支小虫,它的爬行速度是m m/s(m可以自由设定), 它要爬完这个三角形的各边需要多长时间?4.长方体类要求:提供getter和setter方法,无参和有参构造方法,可以计算体积和表面积;5.猜数字游戏:一个类A有一个成员变量v,有一个初值100。定义一个类,对A类的成员变量v进行猜。如果大了则提示大了,小了则提示小了。等于则提示猜测成功。?6.请定义一个交通工具(Vehicle)的类,其中有: 属性:速度(speed),体积(size)等等 方法:移动(move()),设置速度(setSpeed(int speed)),加速speedUp(),减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象,并通过构造方法给它初始化speed,size的值,并且通过打印出来。另外,调用加速,减速的方法对速度进行改变。 7.在程序中,经常要对时间进行操作,但是并没有时间类型的数据。那么,我们可以自己实现一个时间类,来满足程序中的需要。 定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second),为了保证数据的安全性,这三个成员变量应声明为私有。 为MyTime类定义构造方法,以方便创建对象时初始化成员变量。 再定义diaplay方法,用于将时间信息打印出来。 为MyTime类添加以下方法: addSecond(int sec) addMinute(int min) addHour(int hou) subSecond(int sec) subMinute(int min) subHour(int hou) 分别对时、分、秒进行加减运算。 8.编写Java程序,模拟简单的计算器。 定义名为Number的类,其中有两个整型数据成员n1和n2,应声明为私有。编写构造方法,赋予n1和n2初始值,再为该类定义加(addition)、减(subtration)、乘(multiplication)、除(division)等公有成员方法,分别对两个成员变量执行加、减、乘、除的运算。 在main方法中创建Number类的对象,调用各个方法,并显示计算结果。 9. 编写Java程序,用于显示人的姓名和年龄。 定义一个人类(Person),该类中应该有两个私有属性,姓名(name)和年龄(age)。定义构造方法,用来初始化数据成员。再定义显示(display)方法,将姓名和年龄打印出来。 在main方法中创建人类的实例,然后将信息显示。 10. 为“无名粉店”写一个类:class WuMingFen 要求: 1.有三个属性:面码:String theMa 粉的分量(两):int quantity 是否带汤:boolean likeSoup 2.写一个构造方法,以便于简化初始化过程,如: WuMingFen f1 = new WuMingFen("牛肉",3,true); 3.重载构造方法,使得初始化过程可以多样化: WuMingFen f2 = new WuMingFen("牛肉",2); 4.如何使得下列语句构造出来的粉对象是酸辣面码、2两、带汤的? WuMingFen f3 = new WuMingFen(); 5.写一个普通方法:check(),用于查看粉是否符合要求。即:将对象的三个属性打印在控制台上。 11. 定义一个名为Vehicles(交通工具)的基类,该类中应包含String类型的成员属性brand(商标)和color(颜色),还应包含成员方法run(行驶,在控制台显示“我已经开动了”)和showInfo(显示信息,在控制台显示商标和颜色),并编写构造方法初始化其成员属性。 编写Car(小汽车)类继承于Vehicles类,增加int型成员属性seats(座位),还应增加成员方法showCar(在控制台显示小汽车的信息),并编写构造方法。 编写Truck(卡车)类继承于Vehicles类,增加float型成员属性load(载重),还应增加成员方法showTruck(在控制台显示卡车的信息),并编写构造方法。 在main方法中测试以上各类。 12.定义一个网络用户类,要处理的信息有用户ID、用户密码、email地址。在建立类的实例时,把以上三个信息都作为构造函数的参数输入,其中用户ID和用户密码时必须的,缺省的email地址是用户ID加上字符串"@gameschool.com" 13. 编写Addition类,该类中应包含一组实现两数相加运算的重载方法。 实现加法运算的方法,应接受两个参数(即加数和被加数),方法将两个参数进行加法运算后,返回相加结果。考虑可能针对不同的数据类型进行计算,重载一组方法,包括整型、长整型、浮点型、双精度浮点型、还有字符串。 在main方法中创建Addition类的实例,分别调用重载方法测试其效果。 应将Addition类打入到包中,以自己名字的拼音为包命名。 14.建立一个汽车类,包括轮胎个数,汽车颜色,车身重量等属性。并通过不同的构造方法创建事例。 至少要求:汽车能够加速,减速,停车。15.15.小王用枪打小明分析:1.本案例中一共有3个对象,分别是小王,枪,小明;2.在本案例中有一个方法,打(shoot(gun));3.小王,小明不是同一个人,但是他们是同一类人。4.枪的种类有很多种,对应的射击方法也不一样。5.小王和小明他们的射击的方式,精准度,姿态都不一样。1.分析案例中的对象数量和种类。2.分析案例中的方法数量。3.分析案例中是否存在同一类对象。4.分析对象是否确定(是否具有不确定的对象)。5.分析同一类对象的不同特征。难度扩展一:用一个随机数来判断是否打中目标,若打中,提示已死。若没打中可以继续打,需要考虑子弹剩余数量。直到打死或者没子弹了。难度扩展二:考虑到两人的距离差,奔跑速度和手枪的命中率。有如下情况:1.设定一个初始距离,以及两人的奔跑速度。2.当距离差大于枪的射程时,无法命中目标。3.枪的命中率与距离差成反比。难度扩展三:考虑到小明可能会闪避,以及小明有血量,每次命中不一定会秒杀,所以,加入以下元素:1.设定小明的闪避概率,使得小明可以闪避攻击。2.设置小明,小王的总血量,在血量为0的时候才会挂掉。3.考虑到小明可能会在逃跑的过程中反击小王,设置小明的反击概率以及小明的反击伤害。4.小明,小王的攻击有可能会出现暴击,伤害加成自定义。5.每个人都有自己的防御和攻击力,带入到攻击方法里面。16.车库管理系统:现有一车库,可停放货车,小车,自行车,摩托车,电动车。车库存在固定的车位,每个车位有编号,位置,描述,大小。每辆车有车牌号,名称,车主名,大小(车的大小不能大于车位的大小)。17.Animal类,狗、猫、鸡是其子类,Animal有颜色,体型,可以跑,可以跳,每个子类跑的方法和跳的方法不一样。所有类请写好有参构造和无参构造,以及setter和getter方法。18.有Shape类,有计算周长和面积的方法,圆、正方形、长方形继承此类,并有自己计算周长和面积的方法,新增一些自己特有的属性,写好getter和setter方法。19.在屏幕上画图形,如:圆、正方形、三角型等。要求: 画图形的操作可以用System.out.println(...)模拟 图形有圆、正方形、三角型、五边形,六边形等无穷多种 无论要画甚么图形,程序的主体代码都不用修改 目前可以只实现画圆、正方形、三角型 20.写一个动物类,包含重量,年龄等属性,以及移动,捕食方法。分别写鸟,鱼,羊类去继承动物类,重写方法,扩展一些新的方法和属性,如:鱼有鳞片,鸟有翅膀,羊有角.......。分别初始化鸟,鱼,羊的对象,将其存入一个数组中,最后通过键盘输入的名称在数组中找到指定的动物,显示其详细信息。21.请使用接口编码实现如下需求:乐器(Instrument)分为:钢琴(Piano)、小提琴(Violin) 各种乐器的弹奏( play )方法各不相同。 编写一个测试类InstrumentTest,要求:编写方法testPlay,对各种乐器进行弹奏测试。要依据乐器的不同,进行相应的弹奏。 在main方法中创建不同的乐器对象,通过testPlay的弹奏测试方法进行测试。22.定义Fight接口,其中有一个打人的动作(fight)。让胖人(FatFat)和瘦人(Thinthin)分别实现打人接口,但具有不同的打人结果:胖人打人疼,瘦人打人不疼。编写测试类,使用多态的方式对不同人打人的动作进行测试,输出胖人和瘦人打人的动作。23.医生(Doctor)有姓名(name)、编号(idNumber)和地址(address)等基本信息,还都具有量体温 (temperature)和开药(giveMedicine)的方法。医生又分为普通医生和主治医生。普通医生具有上述所有信息。主治医生除以上基本信息之外还有特有的信息:专业(speciality),以及特有的方法会诊(consultation)。重写开药(giveMedicine)方法,普通医生只能开具普通药物,主治医生除了开具普通药物之外还可以开具处方药。请根据他们之间的关系,创建一个Doctor类,包含有关医生的基本信息,在利用继承写一个普通医生(CommDocotor)和主治医生(AdvanceDoctor),并创建测试类Test.java在main方法中利用这些类的对象测试显示他们的各自的信息。24.用面向对象的思想编写类,描述汽车,宝马,奔驰车和驾驶员的关系.提示:宝马和奔驰继承自汽车类,具有启动,运行,停止的方法。驾驶员具有驾驶方法,可以通过驾驶方法驾驶各种类型的汽车。25.根据如下图示,使用接口编写出对应的程序。然后创建一个负责打印的测试类,并创建一个测试打印方法,将打印机接口作为参数,可以使用传入的打印机打印信息。分别创建不同类型的打印机对象,然后通过打印测试类的测试打印方法进行测试,调用打印机的打印方法。体会多态的优点。26.电脑主板上的PCI插槽的规范就类似于Java接口 。声卡网卡 显卡创建一个PCI 接口:包括start启动,和stop停止方法。创建声卡SoundCard.java实现该接口,启动输出“Du du...”,停止输出“Sound stop” 网卡SoundCard实现该接口,启动输出“Send...”,停止输出“Network stop” 显卡DisplayCard实现该接口,启动输出“show...”,停止输出“Display stop” 然后使用Java接口作为类型,创建对应的对象,调用相应的方法实现测试。27.升级第26题题,创建MainBoard主板类,创建usePCICard方法,模拟主板上可以插入任意符合PCI插槽规范的卡,将PCI接口作为参数类型,调用对应的启动和停止方法。然后创建不同的的PCI对象,使用usePCICard测试,体会通过更换实现接口的类来更换系统的实现。28.升级第22题,为汽车添加运行状况方法,重写车辆的运行状况方法:出租车输出,正在送乘客前往机场;卡车输出,疯狂拉土车正在全速奔跑;巴士输出,人太多了坐下一辆。分别实例出租车,卡车,巴士对象,并测试输出车辆信息,调用方法测试不同对象的方法。定义跟踪车辆运行状况的类CheckCar,再创建方法checkCarState,使用多态实现对各种车辆运行状况的检查。29.定义常量类Constant,在其中定义如下系统中所需的静态常量。3.1415926; // 圆周率 8844.43; // 喜马拉雅 180; // 三角形内角和300000; // 光速,单位(公里/秒) "你好"; //中文问候30. 编写接口Addition,定义add方法,参数是两个int类型,编写此接口的两种实现,一种是将参数相加后输出,一种是相连后输出。编写测试类进行测试。 31. 鼠标(Mouse)和打印机(Printer)类都实现了USB接口,USB接口具有输入(in)和输出(out)的动作。鼠标具有属性整型的x和y坐标,还具有布尔型的left和right属性,代表按下了左键和右键。鼠标的输出方法可以输出鼠标的品牌,当前按下了左键还是右键,以及当前的x和y坐标。输入方法不具体实现。打印机具有属性字符串型的打印内容,输出方法可以提示**品牌的打印机打印内容成功。打印机还有打印print()方法,可以输出当前的的打印内容 32. 二战期间,战争国间谍活动非常密切,所有英国间谍(BritishSpy)有讲英语的特点(speak()方法),所有德国间谍(GermanSpy)都具有讲德语的特点(sprechen方法)。还有一种双重间谍,既可以讲英语又可以讲德语,可以分别输出Hello和Gutentag。情报机关(Agency)具有两个方法一个是军情5处(toMI5)的间谍测试方法,可以传入英国间谍,并调用讲英语的方法,输出结果;另一个是德国情报处(inGermany)的间谍测试方法,可以传入德国间谍,并调用讲德语的方法,输出结果。创建德国间谍和英国间谍分别进行测试。创建双重间谍进行测试,看是否能同时通过军情5处和德国情报处的间谍检测。提示:定义两个接口BritishSpy(英国间谍)和GermanSpy(德国间谍)。 33.使用面向对象的思想实现龟兔赛跑。提示:创建Rabbit和Tortoise类分别代表兔子和乌龟,分别具有属性speed代表兔子和乌龟的速度;具有方法run代表跑步动作,run方法有一个类型为double的参数,代表跑步的长度,通过长度除以速度计算出跑步所需的时间,并输出。创建Match类代表比赛类,定义length属性代表比赛的跑步长度,定义begin方法,将兔子和乌龟作为参数传入,在方法中分别调用兔子和乌龟的跑步方法,输出跑步所需的时间。35.字符串练习题:a)请从该字符串中String s = "aljdlkfjAslkjdflkajKJKJUIHOL::FKSJfKLJF182738KFJKDJSKFjjsldjflw";统计大写字母和小写字母出现的个数,及非字母出现的个数。b)请从该字符串中String s = "javaksjdflkajjavakfjalejkjavakjfalejkjfvbajvakjaskdfjavaljks465465java";统计"java"出现的次数及相应的索引位置。36.现有一网上购物平台,商品信息包含商品名称,价格,评分,商品描述。需求:通过手动输入存储商品到数组,然后通过输入的名称模糊查询商品信息,显示出查询到的所有商品的详细信息。38.给定一个字符串String s =“dkldijgdjfaisdjlfqweiroiqhuitRepeat方法,去掉其中重复的字母,返回一个不重复的集合。。39.一个List集合里面有30个元素,所有元素随机,提供一个方法,对这个集合进行排序,并遍历排序后的结果。40.使用ArrayList实现比牌游戏, 规则:随机拿到3张牌,系统每次获取三张,拿出牌以后要从总的牌中去除这三张牌,对比手中的三张牌,直到拿到比手中大的牌,统计次数。比牌规则:规则:3个相同的>花色相同的且连续的>花色相同但不连续的>花色不同但连续的>其中有2个相同的>没有任何相同的也不连续,花色也不全一样的。如果双方的牌满足同一规则,则对比牌的点数大小。难度扩展:实现多人比牌难度扩展二:实现加注功能。


0 0