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