JAVA语言(28道练习题)
【练习题】01.类的成员变量 猜数字游戏一个类A有一个成员变量v有一个初值100。定义一个类对A类的成员变量v进行猜。如果大了则提示大了小了则提示小了。等于则提示猜测成功。import java.util.;
public class lianxi
{
public static void main(String[] dsa)
{
A a=new A();
Scanner input=new Scanner(System.in);
while (1==1)
{
System.out.println(“请猜测数字”);
int i=input.nextInt();
if (i<a.v)
{
System.out.println(“小了”);
continue;
}
else if (i>a.v)
{
System.out.println(“大了”);
continue;
}
else
{
System.out.println(“恭喜你猜对了!”);
break;
}
}
}
}
class A
{
public int v=100;
}
【练习题】02.类的成员变量 请定义一个交通工具(Vehicle)的类其中有: 属性速度(speed)体积(size)等等 方法移动(move())设置速度(setSpeed(int speed))加速speedUp(),减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象并通过方法给它初始化speed,size的值并且通过打印出来。另外调用加速减速的方法对速度进行改变。public class Vehicle
{
private int speed;
private String size;
public void move()
{
System.out.println(“i’m moving”);
}
public void setSpeed(int speed)
{
System.out.println(“now i’m running with”+speed+“per hour”);
}
public void speedUp()
{
Vehicle v=new Vehicle();
v.setSpeed(1000);
}
public void speedDown()
{
Vehicle v=new Vehicle();
v.setSpeed(20);
}
public static void main(String[] dsa)
{
Vehicle v=new Vehicle();
v.speed=100;
v.size=“50/m^3”;
System.out.println(“the initial speed is”+v.speed+“and my size is “+v.size);
v.speedUp();
v.speedDown();
}
}
【练习题】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) 分别对时、分、秒进行加减运算。public class MyTime
{
private int hour;
private int minute;
private int second;
public MyTime(int x,int y,int z)
{
this.hour=x;
this.minute=y;
this.second=z;
}
public void display()
{
System.out.println(“the time is “+this.hour+”:”+this.minute+”:”+this.second);
}
public void addHour(int hou)
{
this.hour=this.hour+hou;
}
public void addSecond(int sec)
{
this.second=this.second+sec;
}
public void addMinute(int min)
{
this.minute=this.minute+min;
}
public void subHour(int hou)
{
this.hour=this.hour-hou;
}
public void subMinute(int min)
{
this.minute=this.minute-min;
}
public void subSecond(int sec)
{
this.second=this.second-sec;
}
}
【练习题】04.构造方法 编写Java程序模拟简单的计算器。 定义名为Number的类其中有两个整型数据成员n1和n2应声明为私有。编写构造方法赋予n1和n2初始值再为该类定义加addition、减subtration、乘multiplication、除division等公有成员方法分别对两个成员变量执行加、减、乘、除的运算。 在main方法中创建Number类的对象调用各个方法并显示计算结果。public class Number
{
private int x;
private int y;
public Number(int x,int y)
{
this.x=x;
this.y=y;
}
public void plus()
{
System.out.println(“the result is:”+(this.x+this.y));
}
public void except()
{
System.out.println(“the result is :”+(this.x-this.y));
}
public void multiplication()
{
System.out.println(“the result is :”+(this.xthis.y));
}
public void division()
{
System.out.println(“the result is :”+(this.x/this.y));
}
public static void main(String[] dsa)
{
Number lian=new Number(4,4);
lian.plus();
lian.except();
lian.multiplication();
lian.division();
}
}
【练习题】05.构造方法 编写Java程序用于显示人的姓名和年龄。 定义一个人类Person该类中应该有两个私有属性姓名name和年龄age。定义构造方法用来初始化数据成员。再定义显示display方法将姓名和年龄打印出来。 在main方法中创建人类的实例然后将信息显示。public class lianxi
{
private String name;
private int age;
public lianxi(String name,int age)
{
this.name=name;
this.age=age;
}
public void display()
{
System.out.println(“name:”+name+"\tage:"+age);
}
public static void main(String[] dsa)
{
lianxi lian=new lianxi(“wing”,29);
lian.display();
}
}
【练习题】06.get方法和set方法 定义一个类该类有一个私有成员变量通过构造方法将其进行赋初值并提供该成员的getXXX()和setXXX()方法 提示假设有private String name;则有public void setName(String name){ this.name = name; } public String getName(){ return this.name; }
public class lianxi
{
private int i;
public lianxi(int i)
{
lianxi lian=new lianxi();
lian.seti(i);
lian.geti();
System.out.println(“i=”+i);
}
public lianxi()
{}
public int geti()
{
return i;
}
public void seti(int i)
{
this.i=i;
}
public static void main(String[] dsa)
{
lianxi lian=new lianxi(3);
}
}
【练习题】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() 用于查看粉是否符合要求。即 将对象的三个属性打印在控制台上。public class WuMingFen
{
private String theMa;
private int quantity;
private boolean likeSoup;
public WuMingFen (String s,int i,boolean b)
{
this.theMa=s;
this.quantity=i;
this.likeSoup=b;
}
public WuMingFen (String s,int i)
{
this.theMa=s;
this.quantity=i;
}
public WuMingFen (String s,boolean b,int i)
{
this.theMa=s;
this.quantity=i;
this.likeSoup=b;
if (btrue)
{
String b1=“带汤的”;
System.out.println(theMa+quantity+“两”+b1);
}
}
public void check()
{
if (likeSouptrue)
{
String b1=“带汤的”;
System.out.println(“面码:”+theMa+"\n分量"+quantity+"\n"+b1);
}
else
{
String b1=“不带汤的”;
System.out.println(“面码:”+theMa+"\n分量"+quantity+"\n"+b1);
}
}
public static void main(String[] args)
{
WuMingFen lian=new WuMingFen (“沙茶面”,2,true);
lian.check();
}
}
【练习题】08.构造方法的重载 定义一个名为Vehicles 交通工具 的基类 该类中应包含String类型的成员属性brand 商标 和color 颜色 还应包含成员方法run 行驶 在控制台显示“我已经开动了” 和showInfo 显示信息 在控制台显示商标和颜色 并编写构造方法初始化其成员属性。 编写Car 小汽车 类继承于Vehicles类 增加int型成员属性seats 座位 还应增加成员方法showCar 在控制台显示小汽车的信息 并编写构造方法。 编写Truck 卡车 类继承于Vehicles类 增加float型成员属性load 载重 还应增加成员方法showTruck 在控制台显示卡车的信息 并编写构造方法。 在main方法中测试以上各类。public class Vehicles
{
public String brand;
public String color;
public void run()
{
System.out.println(“i am running”);
}
public Vehicles(String b, String b1)
{
this.brand=b;
this.color=b1;
}
public void showInfo()
{
System.out.println(“brand:”+this.brand+"\tcolor:"+this.color);
}
public static void main(String[] dad)
{
Vehicles lian=new Vehicles (“Lamborgihini”,“yellow”);
lian.showInfo();
car c=new car(“Aventador”,“green”,6);
c.showCar();
Truck t=new Truck(“Dongfangxuetielong”,“Bule”,12);
t.showTruck();
}
}
class car extends Vehicles
{
public int seat;
public void showCar()
{
System.out.println(“i am a “+this.brand+“my color is “+this.color+“i have “+this.seat+“seats~”);
}
public car(String b, String b1,int s)
{
super(b,b1);
this.seat=s;
}
}
class Truck extends Vehicles
{
public float load;
public void showTruck()
{
System.out.println(“i am a “+this.brand+“my color is “+this.color+“i can stand “+this.load+“tons of materials”);
}
public Truck(String b, String b1,float f)
{
super(b,b1);
this.load=f;
}
}
【练习题】09.构造方法与重载 定义一个网络用户类 要处理的信息有用户ID、用户密码、email地址。在建立类的实例时 把以上三个信息都作为构造函数的参数输入 其中用户ID和用户密码时必须的 缺省的email地址是用户ID加上字符串”@gameschool.com"public class UerInfo
{
private int id;
private String pwd;
private String e_add;
public UerInfo(int i,String s,String s1)
{
this.id=i;
this.pwd=s;
this.e_add=s1;
System.out.println(id+”\n”+pwd+”\n”+e_add);
}
public UerInfo(int i,String s)
{
this.id=i;
this.pwd=s;
this.e_add=id+"@gameschool.com”;
System.out.println(id+”\n”+pwd+”\n”+e_add);
}
public static void main(String[] dsa)
{
UerInfo uer=new UerInfo(1201012204,“dwajldwajlj”,"1111111111@gameschool.com”);
UerInfo u=new UerInfo(1201012204,“dwijadiwjal”);
}
}
【练习题】10.构造方法与重载、包 编写Addition类 该类中应包含一组实现两数相加运算的重载方法。 实现加法运算的方法 应接受两个参数 即加数和被加数 方法将两个参数进行加法运算后 返回相加结果。考虑可能针对不同的数据类型进行计算 重载一组方法 包括整型、长整型、浮点型、双精度浮点型、还有字符串。 在main方法中创建Addition类的实例 分别调用重载方法测试其效果。 应将Addition类打入到包中 以自己名字的拼音为包命名。package cj.lian;
public class lianxi
{
public void additionInt(int x,int y)
{
int sum=x+y;
System.out.println(“sum=”+sum);
}
public void additionLong(long x,long y)
{
long sum=x+y;
System.out.println(“sum=”+sum);
}
public void additionFloat(float x,float y)
{
float sum=x+y;
System.out.println(“sum=”+sum);
}
public void additionDouble(double x,double y)
{
double sum=x+y;
System.out.println(“sum=”+sum);
}
public void additionString(String x,String y)
{
String sum=x+y;
System.out.println(“sum=”+sum);
}
public static void main(String[] dsa)
{
lianxi lian=new lianxi();
lian.additionInt(1,2);
lian.additionString(“1”,“2”);
}
}
【练习题】11.构造方法与重载 将上次练习题三中编写的MyTime类打到以自己名字的拼音命名的包中 并为该类重载一组构造方法 以方便使用者能够以多种形式初始化该类的实例。package java.time;
public class MyTime
{
private int hour;
private int minute;
private int second;
public MyTime(int x,int y,int z)
{
this.hour=x;
this.minute=y;
this.second=z;
}
public MyTime()
{}
public void display()
{
System.out.println(“the time is “+this.hour+”:”+this.minute+”:"+this.second);
}
public void addHour(int hou)
{
this.hour=this.hour+hou;
}
public void addSecond(int sec)
{
this.second=this.second+sec;
}
public void addMinute(int min)
{
this.minute=this.minute+min;
}
public void subHour(int hou)
{
this.hour=this.hour-hou;
}
public void subMinute(int min)
{
this.minute=this.minute-min;
}
public void subSecond(int sec)
{
this.second=this.second-sec;
}
public static void main(String[] das)
{
MyTime t=new MyTime();
t.display();
}
}
编译包: javac -d . MyTime.java【练习题】12.构造方法与重载 建立一个汽车类 包括轮胎个数 汽车颜色 车身重量等属性。并通过不同的构造方法创建事例。 至少要求 汽车能够加速 减速 停车。 要求 命名规范 代码体现层次 有友好的操作提示。public class car
{
private int lunzi;
private String color;
private double weight;
public car(){}
public car(int i,String s,double d)
{
this.lunzi=i;
this.color=s;
this.weight=d;
}
public void SpeedUp()
{
System.out.println(“i am speeding up~”);
}
public void SpeedDown()
{
System.out.println(“i am speeding down~”);
}
public void Stop()
{
System.out.println(“i have stopped”);
}
public static void main(String[] das)
{
car c=new car();
car c1=new car(4,“yellow”,1.45);
c.SpeedUp();
c.SpeedDown();
c.Stop();
}
}
【练习题】13.构造方法与重载 创建一个类 为该类定义三个构造函数 分别执行下列操作 1、传递两个整数值并找出其中较大的一个值 2、传递三个double值并求出其乘积 3、传递两个字符串值并检查其是否相同 4、在main方法中测试构造函数的调用public class lianxi
{
public lianxi(int x,int y)
{
if (x>y)
{
System.out.println("The max is "+x);
}
else
System.out.println("The max is "+y);
}
public lianxi(double d1,double d2,double d3)
{
double ji=d1d2d3;
System.out.println("The multiply result is "+ji);
}
public lianxi(String s1,String s2)
{
boolean b;
if (s1.equals(s2))
{
b=true;
System.out.println(b);
}
else
{
b=false;
System.out.println(b);
}
}
public static void main(String[] dasd)
{
lianxi c=new lianxi(1,2);
lianxi c1=new lianxi(1,2,3);
lianxi c2=new lianxi(“nihao”,“nihao”);
}
}
【练习题】14.Static关键字与普通变量的区别 创建一个名称为StaticDemo的类 并声明一个静态变量和一个普通变量。对变量分别赋予10和5的初始值。在main()方法中输出变量值。public class StaticDemo
{
private static int i=10;
private int y=5;
public static void main(String[] das)
{
StaticDemo s=new StaticDemo();
System.out.println("The static digit is “+car.i+”\n and the normal digit is "+s.y);
}
}
【练习题】15.继承 创建一个名称为MainPackage的包 使它包含MainClass和MainSubClass类。MainClass类应当包含变量声明 其值从构造函数中输出。MainSubClass类从MainClass派生而来。试执行下列操作 创建一个名称为SamePackage的类 使它导入上述包 并创建一个MainSubClass类的对象。创建MainClass包–package MainPackage.Main;
public class MainClass
{
public int i=10;
public MainClass()
{
System.out.println(i);
}
}
创建MainSubClass包–package MainPackage.Main;
public class MainSubClass extends MainClass
{
public MainSubClass (){}
}
创建SamePackage类—import MainPackage.Main.MainSubClass;
public class SamePackage
{
public static void main(String[] da)
{
MainSubClass m=new MainSubClass();
}
}
【练习题】16.包、继承、构造函数 创建一个名称为MainPackage的包 使它包含MainClass和MainSubClass类。MainClass类应当包含变量声明 其值从构造方法中输出。MainSubClass类从MainClass派生而来。试执行下列操作 创建一个名称为SamePackage的类 使它导入上述包 并创建一个MainSubClass类的对象。创建MainClass包–package MainPackage.Main;
public class MainClass
{
public int i=10;
public MainClass()
{
System.out.println(i);
}
}
创建MainSubClass包–package MainPackage.Main;
public class MainSubClass extends MainClass
{
public MainSubClass (){}
}
创建SamePackage类—import MainPackage.Main.MainSubClass;
public class SamePackage
{
public static void main(String[] da)
{
MainSubClass m=new MainSubClass();
}
}
【练习题】17.继承 创建一个父类和子类 父类有一个数据成员 子类继承父类的该数据成员 通过构造函数初始化并显示该数据成员的值。 class Father
{
public int i=10;
}
class Son extends Father
{
public lianxi()
{
System.out.println(i);
}
public static void main(String[] dsa)
{
Son s=new Son ();
}
}
【练习题】18.覆盖、继承 建立一个汽车Auto类 包括轮胎个数 汽车颜色 车身重量、速度等成员变量。并通过不同的构造方法创建实例。至少要求 汽车能够加速 减速 停车。 再定义一个小汽车类Car 继承Auto 并添加空调、CD等成员变量 覆盖加速 减速的方法public class Auto
{
public int luntai;
public String color;
public double weight;
public int speed;
public Auto(){}
public void jiasu()
{
System.out.println(“wo zai jiasu”);
}
public void jiansu()
{
System.out.println(“wo zai jiansu”);
}
public void tingzhi()
{
System.out.println("wo bu kai le ");
}
public static void main(String[] dsa)
{
car c=new car();
c.jiasu();
c.jiansu();
}
}
class car extends Auto
{
public String air_condition;
public String cd;
public void jiasu()
{
System.out.println(“wo shi jiaoche, wo zai jiasu”);
}
public void jiansu()
{
System.out.println(“wo shi jianche,wo zai jiansu”);
}
}
【练习题】19.抽象类与继承 设计一个能细分为矩形、三角形、圆形和椭圆形的“图形”类。使用继承将这些图形分类 找出能作为基类部分的共同特征(如校准点)和方法(如画法、初始化) 并看看这些图形是否能进一步划分为子类。 本题只考虑实现思想 不考虑具体实现的细节 实现方式可自由发挥。
```java
abstract class tuxing
{
public tuxing()
{
System.out.println("i am tuxing");
}
public static void main(String[] dsa)
{
juxing j=new juxing();
circle c=new circle();
tuoyuan t=new tuoyuan();
}
}
class juxing extends tuxing
{
public juxing()
{
System.out.println(" i am juxing");
}
}
class circle extends tuxing
{
public circle()
{
System.out.println("i am circle");
}
}
class tuoyuan extends circle
{
public tuoyuan()
{
System.out.println("i am tuoyuan");
}
}
【练习题】20.抽象类 创建一个Vehicle类并将它声明为抽象类。在Vehicle类中声明一个NoOfWheels方法 使它返回一个字符串值。创建两个类Car和Motorbike从Vehicle类继承 并在这两个类中实现NoOfWheels方法。在Car类中 应当显示“四轮车”信息 而在Motorbike类中 应当显示“双轮车”信息。创建另一个带main方法的类 在该类中创建Car和Motorbike的实例 并在控制台中显示消息。public class lianxi
{
public static void main(String[] dsa)
{
Car c=new Car();
c.NoOfWheels();
Motorbike m=new Motorbike();
m.NoOfWheels();
}
}
abstract class Vehicle
{
public void NoOfWheels(){}
}
class Car extends Vehicle
{
public void NoOfWheels()
{
System.out.println("四轮车");
}
}
class Motorbike extends Vehicle
{
public void NoOfWheels()
{
System.out.println("双轮车");
}
}
【练习题】21.抽象类 创建一个Vehicle类并将它声明为抽象类。在Vehicle类中声明一个NoOfWheels方法 使它返回一个字符串值。创建两个类Car和Motorbike从Vehicle类继承 并在这两个类中实现NoOfWheels方法。在Car类中 应当显示“四轮车”信息 而在Motorbike类中 应当显示“双轮车”信息。创建另一个带main方法的类 在该类中创建Car和Motorbike的实例 并在控制台中显示消息。public class lianxi
{
public static void main(String[] dsa)
{
Car c=new Car();
c.NoOfWheels();
Motorbike m=new Motorbike();
m.NoOfWheels();
}
}
abstract class Vehicle
{
public void NoOfWheels(