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