大家?guī)兔纯矗瑸槭裁醋兞縧ight賦值失敗,輸出結(jié)果為null?
//這是父類(lèi)貨車(chē)的代碼 public?class?Truck?{ ?static?Float?cargoCa;?????//創(chuàng)建貨車(chē)的載貨量 ?static?int?capacity=4;????//創(chuàng)建貨車(chē)的載客量 ?static?int?rent;?????//創(chuàng)建貨車(chē)的日租金 ?int?smallType;?????//用來(lái)接收局部變量smalltype的值 ?Scanner?input=new?Scanner(System.in); ?void?getType()?{ ??System.out.println("請(qǐng)輸入您要選擇的貨車(chē)類(lèi)型:"); ?????System.out.println("1、輕型貨車(chē)(可核載5噸)??????????2、重型貨車(chē)(可核載20噸)"); ?????int?smalltype=input.nextInt(); ?????smallType=smalltype; ?????while(smalltype*0==0)?{ ???????if(smalltype==1)?{???//這部分重型貨車(chē)的繼承代碼沒(méi)有貼上 ????????Heavy?heavy=new?Heavy(); ????????heavy.getBrand(); ????????break; ???????}else?if(smalltype==2)?{ ????????Light?light=new?Light(); ????????light.getBrand(); ????????break; ???????}else?{ ????????System.out.println("您的輸入有誤!請(qǐng)輸入您要選擇的貨車(chē)類(lèi)型:"); ????????System.out.println("1、輕型貨車(chē)(可核載5噸)??????????2、重型貨車(chē)(可核載20噸)"); ????????smalltype=input.nextInt(); ???????} ?????} ?} ? //show()方法調(diào)用兩個(gè)輕貨和重貨子類(lèi)的showFinal()方法展示租車(chē)清單 ?void?show()?{????? ??if(smallType==1)?{ ??????Light?light=new?Light(); ??????light.showFinal(); ??}else?if(smallType==2)?{ ???Heavy?heavy=new?Heavy(); ???heavy.showFinal(); ??} ?} } ?? ??//這是子類(lèi)Light繼承父類(lèi)Truck的代碼 ??public?class?Light?extends?Truck?{ ?static?String?name="輕型貨車(chē)"; ? ?//【注意,創(chuàng)建light字符串,用來(lái)接收局部變量中的品牌名稱(chēng)】 ?static?String?light; ?Scanner?input=new?Scanner(System.in); ?void?getBrand()?{ ??String?light1="日產(chǎn)"; ??String?light2="雪鐵龍"; ??String?light3="標(biāo)致"; ??Light.cargoCa=5f; ??System.out.println("請(qǐng)輸入您要選擇的輕型貨車(chē)品牌:"); ?????System.out.println("1、"+light1+"(1200元/天)??????????"+"2、"+light2+"(1500元/天)??????????"+"3、"+light3+"(1800元/天)"); ?????int?lBrand=input.nextInt(); ?????while(lBrand*0==0)?{ ??????if(lBrand==1)?{ ???????Light.rent=1200; ???????light=light1; ???????break; ??????}else?if(lBrand==2)?{ ???????Sedan.rent=1500; ???????light=light2; ???????break; ??????}else?if(lBrand==3)?{ ???????Sedan.rent=1800; ???????light=light3; ???????break; ??????}else?{ ???????System.out.println("您的輸入有誤!請(qǐng)輸入您要選擇的輕型貨車(chē)品牌:"); ???????System.out.println(light1+"(1200元/天)??????????"+light2+"(1500元/天)??????????"+light3+"(1800元/天)"); ???????lBrand=input.nextInt(); ??????} ?????} ?} ? //子類(lèi)Light用來(lái)展示租車(chē)清單的showFinal()方法 ?void?showFinal()?{ ??System.out.println("請(qǐng)輸入您要租車(chē)的數(shù)量:"); ?????int?amt=input.nextInt(); ??System.out.println("請(qǐng)輸入您要租車(chē)的天數(shù):"); ?????int?days=input.nextInt(); ?????int?price=Light.rent*amt*days; ????? ?????//【注意,就是這里的變量light,在InitialCRS類(lèi)里面的最后輸出結(jié)果為null】 ?????System.out.println("車(chē)型:"+light+name); ?????System.out.println("總載人量:"+Truck.capacity*amt+"??????????總載貨量:"+Light.cargoCa*amt+"噸"); ?????System.out.println("總計(jì):"+price+"元"); ?} } ?//這是執(zhí)行類(lèi)InitialCRS的代碼???????? ?public?class?InitialCRS?{ ?public?static?void?main(String[]?args)?{ ??//?TODO?Auto-generated?method?stub ??Scanner?input=new?Scanner(System.in); ??System.out.println("請(qǐng)問(wèn)您是否要租車(chē)?"); ??System.out.println("1、是??????????2、否"); ??int?confirm=input.nextInt(); ??while(confirm*0==0)?{ ??????if(confirm==2)?{ ???????System.out.println("答答租車(chē)系統(tǒng)已退出,感謝您的使用!"); ???????break; ??????}else?if(confirm==1)?{ ????System.out.println("請(qǐng)選擇您要租賃的車(chē)輛類(lèi)型:"); ???????System.out.println("1、汽車(chē)??????????2、貨車(chē)??????????3、皮卡"); ???????int?type=input.nextInt(); ???????while(type*0==0)?{ ????????????if(type==1)?{???//Car父類(lèi)部分的代碼沒(méi)有貼出 ????????????Car?car=new?Car(); ????????????car.getType(); ????????????car.show(); ????????????break; ????????????}else?if(type==2)?{???//本次問(wèn)題中的Truck類(lèi)的方法調(diào)用 ???????Truck?truck=new?Truck(); ???????truck.getType(); ???????truck.show(); ???????break; ?????????????}else?if(type==3)?{???//pickup部分的代碼沒(méi)有貼出 ????????Pickup?pickup=new?Pickup(); ????????pickup.getBrand(); ????????pickup.show(); ????????break; ??????????????}else?{ ????????????System.out.println("您的輸入有誤!請(qǐng)選擇您要租賃的車(chē)輛類(lèi)型:"); ????????????System.out.println("1、汽車(chē)??????????2、貨車(chē)??????????3、皮卡"); ????????????type=input.nextInt(); ????????????} ???????} ???????break; ??????}else?{ ???????System.out.println("您的輸入有誤!請(qǐng)問(wèn)您是否要租車(chē)?"); ???????System.out.println("1、是??????????2、否"); ???????confirm=input.nextInt(); ???????} ?????} ??input.close(); ?} } //在這里多說(shuō)一句,我在其它子類(lèi)里邊,以一模一樣的方式創(chuàng)建了類(lèi)似于light的用來(lái)接收品牌的字符串,其最后的輸出結(jié)果都是正常的,只有這個(gè)字符串light不知道怎么回事輸出結(jié)果竟然是null
?
2017-12-29
找到問(wèn)題了,是Truck類(lèi)中的Heavy與Light實(shí)例化的位置調(diào)換了。
2017-12-29
其運(yùn)行結(jié)果如下圖,light的輸出值為null