用笨辦法寫的作業 有老師或大大看看達標不?
我用笨辦法寫的 寫了5個類?
一個父類 五個子類 一個main類 想知道如何能優化 更省代碼省空間呢?
如下:
父類 Transp
public class Transp {
public String transpName;
public String transpStyle;
public int transpNum;
public String getTranspName() {
return transpName;
}
public void setTranspName(String transpName) {
this.transpName = transpName;
}
public String getTranspStyle() {
return transpStyle;
}
public void setTranspStyle(String transpStyle) {
this.transpStyle = transpStyle;
}
public int getTranspNum() {
return transpNum;
}
public void setTranspNum(int transpNum) {
this.transpNum = transpNum;
}
public void setFields() {
setTranspName(null);
setTranspStyle(null);
setTranspNum(0);
}
}
子類 Bus
public class Bus extends Transp {
public void setFields() {
setTranspName("Bus");
setTranspStyle("land");
setTranspNum(40);
}
}
子類 Plane
public class Plane extends Transp {
public void setFields() {
setTranspName("Plane");
setTranspStyle("air");
setTranspNum(100);
}
}
子類 Ship
public class Ship extends Transp {
public void setFields() {
setTranspName("Ship");
setTranspStyle("sea");
setTranspNum(200);
}
}
子類 SpacePlane
public class SpacePlane extends Transp {
public void setFields() {
setTranspName("SpacePlane");
setTranspStyle("spcace");
setTranspNum(20);
}
}
子類 Train
public class Train extends Transp {
public void setFields() {
setTranspName("Train");
setTranspStyle("rail");
setTranspNum(500);
}
}
main類
import java.util.Scanner;
public class mainTransp {
public static void main(String[] args) {
double scannerNum;
Scanner input = new Scanner(System.in);
for (int i = 0; i < 6; i++) {
System.out.println("請輸入查詢序號:? 1為Bus 2為Plane 3為Ship 4為SpacePlane 5為Train 0為查詢所有");
scannerNum = input.nextDouble();
if (scannerNum < 0 || scannerNum > 5 || scannerNum != (int) scannerNum) {
System.out.println("輸入有誤 請重新輸入!");
continue;
} else {
if (scannerNum == 1 || scannerNum == 0) {
Bus set = new Bus();
set.setFields();
System.out.println("運輸方式:" + set.getTranspName() + "\n運輸路線為:" + set.getTranspStyle() + "\n運送人數為:"
+ set.getTranspNum() + "\n");
if (scannerNum != 0) {
break;
}
}
if (scannerNum == 2 || scannerNum == 0) {
Plane set = new Plane();
set.setFields();
System.out.println("運輸方式:" + set.getTranspName() + "\n運輸路線為:" + set.getTranspStyle() + "\n運送人數為:"
+ set.getTranspNum() + "\n");
if (scannerNum != 0) {
break;
}
}
if (scannerNum == 3 || scannerNum == 0) {
Ship set = new Ship();
set.setFields();
System.out.println("運輸方式:" + set.getTranspName() + "\n運輸路線為:" + set.getTranspStyle() + "\n運送人數為:"
+ set.getTranspNum() + "\n");
if (scannerNum != 0) {
break;
}
}
if (scannerNum == 4 || scannerNum == 0) {
SpacePlane set = new SpacePlane();
set.setFields();
System.out.println("運輸方式:" + set.getTranspName() + "\n運輸路線為:" + set.getTranspStyle() + "\n運送人數為:"
+ set.getTranspNum() + "\n");
if (scannerNum != 0) {
break;
}
}
if (scannerNum == 5 || scannerNum == 0) {
Train set = new Train();
set.setFields();
System.out.println("運輸方式:" + set.getTranspName() + "\n運輸路線為:" + set.getTranspStyle() + "\n運送人數為:"
+ set.getTranspNum() + "\n");
if (scannerNum != 0) {
break;
}
}
break;
}
}
}
}
運行后需要獲取輸入數字 是0-5的整數則相應的輸出對應的交通工具和運送人數? 0為輸出所有? 錯誤數字有提示
輸入0 運行如下:
請輸入查詢序號:? 1為Bus 2為Plane 3為Ship 4為SpacePlane 5為Train 0為查詢所有
0
運輸方式:Bus
運輸路線為:land
運送人數為:40
運輸方式:Plane
運輸路線為:air
運送人數為:100
運輸方式:Ship
運輸路線為:sea
運送人數為:200
運輸方式:SpacePlane
運輸路線為:spcace
運送人數為:20
運輸方式:Train
運輸路線為:rail
運送人數為:500
有老師指點一下嗎 謝謝
2020-08-10
說實話,你這寫的太亂太雜了,開始用set和get來封裝的時候transpName和transpStyle前面修飾符就要為private,你定義為public就沒必要寫get,set方法
最后用個for來循環是為了防止亂輸入來寫的嗎?沒有必要呀,你現在學習的就那么多,沒有必要去防止出現異常啥的來操作,就按照學到的知識寫就行了,你要非得自己輸入什么就顯示什么,那就直接用switch來寫,0-6代表啥輸出啥就行,要不然就直接輸出五種汽車得了,暫時不要想太多
Bus set = new Bus();你這樣new一個對象,對象名為set后面所有的都設置為set,你這不仔細看都不明白?set.getTranspName()這set哪來的,直接就定義為bus得了,一般定義名字都是看著就懂的,不然沒注釋仔細看太累了
2020-08-14
get和set方法和你的一樣,就是選擇的結構不一樣,這樣個人感覺方便
2020-08-14
選擇的話可以改成switch,比較方便點,然后輸出那個子類的屬性也會比你的那個方便很多