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.x
this.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; }java

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.構造方法與重載 建立一個類 爲該類定義三個構造函數 分別執行下列操做 一、傳遞兩個整數值並找出其中較大的一個值 二、傳遞三個double值並求出其乘積 三、傳遞兩個字符串值並檢查其是否相同 四、在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」);
}
}git

【練習題】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(){} } class Car extends Vehicle { public void NoOfWheels() { System.out.println("四輪車"); } } class Motorbike extends Vehicle { public void NoOfWheels() { System.out.println("雙輪車"); } } 【練習題】22.接口 建立一個名稱爲Vehicle的接口 在接口中添加兩個帶有一個參數的方法start()和stop()。在兩個名稱分別爲Bike和Bus的類中實現Vehicle接口。建立一個名稱爲interfaceDemo的類 在interfaceDemo的main()方法中建立Bike和Bus對象 並訪問start()和stop()方法。public interface Vehicle { public void start(); public void stop(); }//藉口類 public class interfaceDemo { public static void main(String[] dsa) { Bike bike=new Bike(); bike.start(); bike.stop(); Bus bus=new Bus(); bus.start(); bus.stop(); } } class Bike implements Vehicle { public void start() { System.out.println("i am bike, i am running"); } public void stop() { System.out.println("i am bke,i am stop"); } } class Bus implements Vehicle { public void start() { System.out.println("i am bus, i am running"); } public void stop() { System.out.println("i am bke,i am stop"); } } 【練習題】23.接口 建立一個名稱爲Vehicle的接口 在接口中添加兩個帶有一個參數的方法start()和stop()。在兩個名稱分別爲Bike和Bus的類中實現Vehicle接口。建立一個名稱爲interfaceDemo的類 在interfaceDemo的main()方法中建立Bike和Bus對象 並訪問start()和stop()方法。public interface Vehicle { public void start(); public void stop(); }//藉口類 public class interfaceDemo { public static void main(String[] dsa) { Bike bike=new Bike(); bike.start(); bike.stop(); Bus bus=new Bus(); bus.start(); bus.stop(); } } class Bike implements Vehicle { public void start() { System.out.println("i am bike, i am running"); } public void stop() { System.out.println("i am bke,i am stop"); } } class Bus implements Vehicle { public void start() { System.out.println("i am bus, i am running"); } public void stop() { System.out.println("i am bke,i am stop"); } } 【練習題】24.抽象類、繼承、接口綜合 設計一個系統 XXX門的實現過程 流程 設計一張抽象的門Door 那麼對於這張門來講 就應該擁有全部門的共性 開門openDoor()和關門closeDoor() 而後對門進行另外的功能設計,防盜--theftproof()、防水--waterproof()、防彈--bulletproof()、防火、防鏽…… 要求 利用繼承、抽象類、接口的知識設計該門接口 Imenpublic interface Imen { public void threfproof(); public void waterproof(); public void fireproof(); public void bulletproof(); public void rustproof(); } public class lianxi { public static void main(String[] args) { men m=new men(); m.opendoor(); m.closedoor(); } } abstract class Door { public void opendoor(){}; public void closedoor(){}; } class men extends Door implements Imen { public void opendoor() { System.out.println("i can open the door"); } public void closedoor() { System.out.println("i can close the door"); } public void threfproof() { System.out.println("i can threfproof"); } public void waterproof() { System.out.println("i can waterproof"); } public void fireproof() { System.out.println("i can fireproof"); } public void bulletproof() { System.out.println("i can bulletproof"); } public void rustproof() { System.out.println("i can rustproof"); } } 【練習題】25.抽象類、繼承、接口綜合 設計一個系統 xxx純淨水生產線 目前流程是 從某個地方把水取出來 而後通過緩衝 過濾 加熱和放糖的步驟 abstract 水{ public void 水(); } interface 過濾{} interface 緩衝{} interface 加熱{} interface 放糖{} class 純淨水1 extends 水 imps 過濾,緩衝{} class 純淨水2 extends 水 imps 緩衝{} class 純淨水2 extends 水 imps 過濾{} 。。。。(重複上題的方法)【練習題】26.綜合題 定義一個抽象的"Role"類 有姓名 年齡 性別等成員變量 1. 要求儘量隱藏全部變量(可以私有就私有,可以保護就不要公有) 再經過GetXXX()和SetXXX()方法對各變量進行讀寫。具備一個抽象的play()方法 該方法不返回任何值 同時至少定義兩個構造方法。Role類中要體現出this的幾種用法。 2. 從Role類派生出一個"Employee"類 該類具備Role類的全部成員 構造方法除外 並擴展 salary成員變量 同時增長一個靜態成員變量「職工編號 ID 」。一樣要有至少兩個構造方法 要體現出this和super的幾種用法 還要求覆蓋play()方法 並提供一個final sing()方法。 3. "Manager"類繼承"Employee"類 有一個final成員變量"vehicle" 4. 在main()方法中製造Manager和Employee對象,並測試這些對象的方法abstract class Role1 { protected String name; protected int age; protected String sex; public abstract void play(); public Role1(){} public Role1(String s,int i,String s1) { this.name=s; this.age=i; this.sex=s1; } public static void main(String[] dsa) { Employee e=new Employee(); e.id=1201012204; e.salary=15000; e.name="you xiao"; e.age=20; e.sex="Man"; e.play(); e.sing(); Manager m=new Manager(); System.out.println(e.id); System.out.println(e.salary); System.out.println(e.name); System.out.println(e.age); System.out.println(e.sex); System.out.println(m.vehicle); } } class Employee extends Role1 { protected int id; protected int salary; public Employee(){} public Employee(String s,int i,String s1,int id,int salary) { super(s,i,s1); this.id=id; this.salary=salary; } public void play() { System.out.println("i can paly"); } public final void sing() { System.out.println("i can sing"); } } class Manager extends Employee { protected final String vehicle="Lamborghini"; } 【練習題】27.綜合題 題目 品嚐飲料 時間 2006-06-18 1、 語言和環境 1. 實現語言 Java環境要求 JDK1.4或以上版本及其聯機幫助文檔2、 要求 一、使用命令行參數 飲料類型 輸出該飲料類型的味道 如 當命令行參數爲1時 結果見圖1 二、若是沒有該種飲料 結果見如圖23、 推薦實現步驟一、創建一個Java抽象類Drink 應當 a、聲明一個抽象方法taste() 該方法負責輸出飲料的味道 b、聲明int型常量來表明不一樣的飲料類型 咖啡、啤酒、牛奶 如 c、聲明靜態工廠方法getDrink(int drinkType) 根據傳入的參數建立不一樣的飲料對象 並返回該對象 建議使用switch語句。該方法要求聲明DrinkNotFoundException 當沒有相對應的飲料類型時 拋出該異常。二、創建Drink的具體子類 a、分別創建Drink的子類 Coffee 表明咖啡 Beer 表明啤酒 Milk 表明牛奶 ; b、實現taste()方法 要求在控制檯打印各自的味道特徵。三、創建異常類DrinkNotFoundException a、繼承Exception b、在Drink的 方 法getDrink(int drinkType)中 聲 明 引 發DrinkNotFoundException異常 當傳入的參數沒有相對應的飲料類型時 拋出異常。 c、在使用getDrink方法的類中捕捉該異常。四、創建Test測試類 測試以上內容的正確性 a、編寫main方法 經過命令行傳參的方式傳入某種飲料的類型。 b、在main方法中 調用Drink類的getDrink方法 得到相應的飲料對象。注意捕獲DrinkNotFoundException。 c、而後調用該飲料對象的taste()方法 輸出該飲料的味道。五、編譯程序 並運行。4、 注意事項 一、仔細審題 把題目要求理解準確 二、請注意多態性的運用 三、請注意代碼的書寫、命名符合規範 應有適當的註釋。 圖2import java.util.*; abstract class Drink { public abstract void taste(); protected int i1; protected int i2; protected int i3; public static void getDrink(int drinkType) throws DrinkNotFoundException { if (drinkType<1||drinkType>3) { throw new DrinkNotFoundException(); } switch (drinkType) { case 1: System.out.println("咖啡"); break; case 2: System.out.println("啤酒"); break; case 3: System.out.println("牛奶"); break; } } } class Coffee extends Drink { public void taste() { System.out.println("我是咖啡,味道是苦的"); } } class Beer extends Drink { public void taste() { System.out.println("我是啤酒,味道是澀的"); } } class Milk extends Drink { public void taste() { System.out.println("我是牛奶,味道是甜的"); } } public class Role1 { public static void main(String[] dsa) throws DrinkNotFoundException { Coffee c=new Coffee(); c.taste(); Beer b=new Beer(); c.taste(); Milk m=new Milk(); m.taste(); Scanner input=new Scanner(System.in); System.out.println("請輸入一個飲料編號:"); try { int i=input.nextInt(); m.getDrink(i); } catch (Exception e) { throw new DrinkNotFoundException("你輸入的編號所對應的飲料不存在"); } } } class DrinkNotFoundException extends Exception { public DrinkNotFoundException() { super(); } public DrinkNotFoundException(String mrg) { super(mrg); } }
相關文章
相關標籤/搜索