哪位大神幫我看看我的代碼幫我解釋下這怎么才能不空指針異常,怎么改正呢
在Test里可載人的地方出現(xiàn)空指針異常運(yùn)行不下去,求指點(diǎn),怎么改呢
package com.caosheng.TEST1;
/*
?* 所有汽車的父類
?*?
?*/
public class Car {
private int carNum;//定義汽車的序號(hào)
private String carName;//定義汽車的名字
private int carRentMoney;//定義汽車的租金
public int getCarNum() {
return carNum;
}
public void setCarNum(int carNum) {
this.carNum = carNum;
}
public String getCarName() {
return carName;
}
public void setCarName(String carName) {
this.carName = carName;
}
public int getCarRentMoney() {
return carRentMoney;
}
public void setCarRentMoney(int carRentMoney) {
this.carRentMoney = carRentMoney;
}
}
package com.caosheng.TEST1;
/*
?* 定義載客的客車
?*?
?*/
public class ZaikeCar extends Car {
private int zaikeNum;//定義載客客車的載客量
public ZaikeCar(int carNum,String carName,int carRentMoney,int zaikeNum){
this.setCarName(carName);
this.setCarNum(carNum);
this.setCarRentMoney(carRentMoney);
this.zaikeNum=zaikeNum;
}
public int getZaikeNum() {
return zaikeNum;
}
public void setZaikeNum(int zaikeNum) {
this.zaikeNum = zaikeNum;
}
}
package com.caosheng.TEST1;
/*
?* 定義一個(gè)可以載貨也可以載貨的皮卡
?*/
public class PikaCar extends Car {
private int zaikeNum;//定義皮卡的載客量
private int zaihuoNum;//定義皮卡的載貨量
public PikaCar(int carNum,String carName,int carRentMoney,int zaikeNum,int zaihuoNum){
this.setCarNum(carNum);
this.setCarName(carName);
this.setCarRentMoney(carRentMoney);
this.zaikeNum=zaikeNum;
this.zaihuoNum=zaihuoNum;
}
public int getZaikeNum() {
return zaikeNum;
}
public void setZaikeNum(int zaikeNum) {
this.zaikeNum = zaikeNum;
}
public int getZaihuoNum() {
return zaihuoNum;
}
public void setZaihuoNum(int zaihuoNum) {
this.zaihuoNum = zaihuoNum;
}
}
package com.caosheng.TEST1;
/*
?* 構(gòu)造用于載貨的貨車
?*/
public class ZaihuoCar extends Car {
private int zaihuoNum;//定義貨車的載貨量
public ZaihuoCar(int carNum,String carName,int carRentMoney,int zaihuoNum){
this.setCarNum(carNum);
this.setCarName(carName);
this.setCarRentMoney(carRentMoney);
this.zaihuoNum=zaihuoNum;
}
public int getZaihuoNum() {
return zaihuoNum;
}
public void setZaihuoNum(int zaihuoNum) {
this.zaihuoNum = zaihuoNum;
}
}
package com.caosheng.TEST1;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("歡迎使用答答租車系統(tǒng)!");
System.out.println("您是否要租車?:1是 ?0否");
Scanner c = new Scanner(System.in);
int k=c.nextInt();
if(k==1){
System.out.println("您可租車的類型及價(jià)格表");
Car [ ] carForRent={new ZaikeCar(1,"奧迪A4",500,4),new ZaikeCar(2,"馬自達(dá)6",400,4),
? ? ? ? ? ? ? ? ? ? new PikaCar(3,"皮卡雪6",450,4,2),new ZaikeCar(4," 金龍 ",800,20),
? ? ? ? ? ? ? ? ? ? new ZaihuoCar(5,"松花江",400,4),new ZaihuoCar(6,"依維柯",1000,20)};
System.out.println("序號(hào)"+"\t"+"汽車名稱"+"\t"+"租金"+"\t"+"\t"+"容量");
for (Car car : carForRent){
if(car instanceof ZaikeCar){
System.out.println(car.getCarNum()+"\t"+car.getCarName()+"\t"+car.getCarRentMoney()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?+"/天"+"\t"+"載人:"+((ZaikeCar)car).getZaikeNum()+"人");
}
if(car instanceof PikaCar){
System.out.println(car.getCarNum()+"\t"+car.getCarName()+"\t"+car.getCarRentMoney()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?+"/天"+"\t"+
"載人:"+((PikaCar)car).getZaikeNum()+"人"+"\t"+
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"載貨:"+((PikaCar)car).getZaihuoNum()+"噸");
}
if(car instanceof ZaihuoCar){
System.out.println(car.getCarNum()+"\t"+car.getCarName()+"\t"+car.getCarRentMoney()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?+"/天"+"\t"+"\t"+"載貨:"+((ZaihuoCar)car).getZaihuoNum()+"噸");
}
}
System.out.println("請(qǐng)輸入您要租車的數(shù)量:");
int carNum2=c.nextInt(); //用于接收汽車的總數(shù)量
int sumR=0;
int sumM=0;
int [] nameN=new int[carNum2];
for(int i=1;i<=carNum2;i++){
System.out.println("請(qǐng)輸入第"+i+"輛車的序號(hào):");
int xuhao=c.nextInt();
nameN[i-1]=xuhao;
if(xuhao==1||xuhao==2||xuhao==4){
sumR+=((ZaikeCar)carForRent[i-1]).getZaikeNum();
}else if(xuhao==3){
sumR+=((PikaCar)carForRent[i-1]).getZaikeNum();
sumM+=((PikaCar)carForRent[i-1]).getZaihuoNum();
}else if(xuhao==5||xuhao==6){
sumM+=((ZaihuoCar)carForRent[i-1]).getZaihuoNum();
}else{
System.out.println("您輸入的序號(hào)有錯(cuò)誤");
?
}
}
//System.out.println(sumR);
System.out.println("請(qǐng)輸入您要租車的天數(shù):");
int day=c.nextInt();
System.out.println("您的賬單:");
System.out.println("**可載人的車有:");
for(int a:nameN){
System.out.println(a);
}
for(int ii=1;ii<=nameN.length;ii++){
int n=nameN[ii];
if(ii==carForRent[n].getCarNum()){
System.out.print(carForRent[n].getCarName()+"\t");
}
}
System.out.println("共載人"+sumR);
?
System.out.println("**可載貨的車有:");
for(int jj=1;jj<=nameN.length;jj++){
if(jj==carForRent[nameN[jj]].getCarNum()){
System.out.print(carForRent[nameN[jj]].getCarName()+"\t");
}
}
System.out.print("共載貨"+sumM);
?
?
}else if(k==0){
System.out.println("感謝您的使用再見(jiàn)!");
}else{
System.out.println("您輸入的信息有錯(cuò)!");
}
}
}
2015-01-14
你這個(gè)程序Bug不止一個(gè)啊....
2015-01-14
我也想問(wèn)為什么???
2015-01-14
我知道輸入汽車的數(shù)量和carForRent[].length不一樣多,沒(méi)想出來(lái)怎么改正,求指點(diǎn)