java、简单练习题

数组练习题:

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个相同的>没有任何相同的也不连续,花色也不全 一样的。如果双方的牌满足同一规则,则对比牌的点数大小。 难度扩展:实现多人比牌 难度扩展二:实现加注功能。


练习题】01.的成员变量 猜数字游戏 一个A有一个成员变量v 有一个初值100。定义一个 对A的成员变量v 进行猜。如果大了则提示大了 小了则提示小了。等于则提示猜测成功。 【练习题】02.的成员变量 请定义一个交通工具(Vehicle)的 其中有: 属性 速度(speed) 体积(size)等等 方法 移动(move()) 设置速度(setSpeed(int speed)) 加速speedUp(),减速speedDown()等等. 最后在测试Vehicle中的main()中实例化一个交通工具对象 并通过方法给它初始化sp eed,size的值 并且通过打印出来。另外 调用加速 减速的方法对速度进行改变。 【练习题】03.的成员变量与方法、构造方法 在程序中 经常要对时间进行操作 但是并没有时间型的数据。那么 我们可以自己实现 一个时间 来满足程序中的需要。 定义名为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) 分别对时、分、秒进行加减运算。 【练习题】04.构造方法 编写Java程序 模拟简单计算器定义名为Number 其中有两个型数据成员n1和n2 应声明为私有。编写构造方法 赋 予n1和n2初始值 再为该定义加 addition 、减 subtration 、乘 multiplication 、 除 division 等公有成员方法 分别对两个成员变量执行加、减、乘、除的运算。 在main方法中创建Number的对象 调用各个方法 并显示计算结果。 【练习题】05.构造方法 编写Java程序 用于显示人的姓名和年龄。 定义一个人 Person 该中应该有两个私有属性 姓名 name 和年龄 age 。定义构造 方法 用来初始化数据成员。再定义显示 display 方法 将姓名和年龄打印出来。 在main方法中创建人实例 然后将信息显示。 【练习题】06.get方法和set方法 定义一个有一个私有成员变量 通过构造方法将其进行赋初值 并提供该成员的g etXXX()和setXXX()方法 提示 假设有private String name。则有 public void setName(String name){ this.name = name。 } public String getName(){ return this.name。 } 【练习题】07.构造方法与重载 为"无名的粉"写一个 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() 用于查看粉是否符合要求。即 将对象的三个属性打印在控 制台上。 【练习题】08.构造方法的重载 定义一个名为Vehicles 交通工具 的基中应包含String型的成员属性brand 商 标 和color 颜色 还应包含成员方法run 行驶 在控制台显示"我已经开动了" 和showI nfo 显示信息 在控制台显示商标和颜色 并编写构造方法初始化其成员属性。 编写Car 小汽车 继承于Vehicles 增加int型成员属性seats 座位 还应增加成员方 法showCar 在控制台显示小汽车的信息 并编写构造方法。 编写Truck 卡车 继承于Vehicles 增加float型成员属性load 载重 还应增加成员 方法showTruck 在控制台显示卡车的信息 并编写构造方法。 在main方法中测试以上各。 【练习题】09.构造方法与重载 定义一个网络用户 要处理的信息有用户ID、用户密码、email地址。在建立实例 时 把
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值