為什么switch循環中的不會有指針報錯,而后面for循環中會有指針報錯?????
求解
package?com.java;
import?java.util.Scanner;
import?javax.xml.validation.SchemaFactoryConfigurationError;
public?class?Mane?{
?public?static?void?main(String[]?args)?{
??//?TODO?Auto-generated?method?stub
????????System.out.println("歡迎使用答答租車系統:");
????????System.out.println("您是否要租車:1是?0否");
????????Scanner?scanner=new?Scanner(System.in);
????????int?respond=scanner.nextInt();
????????if(respond==1)
????????{
?????????System.out.println("您可租車的類型及其價目表:");
?????????System.out.println("序號?汽車名稱?租金?容量"?);
?????????System.out.println("1.??奧迪A4???500元/天???載人:4人");
?????????System.out.println("2.??馬自達6??400元/天???載人:4人");
?????????System.out.println("3.??皮雪卡6??450元/天???載人:4人??載貨:2噸");
?????????System.out.println("4.??金龍?????????800元/天???載人:20人");
?????????System.out.println("5.??松花江??????400元/天???載貨:4噸");
?????????System.out.println("6.??依維柯?????1000元/天??載貨:20噸");
?????????System.out.println("請輸入您要租汽車的數量:");
?????????int?number=scanner.nextInt();
?????????Car?[]car=new?Car[6];
?????????int?total=0;
?????????for(int?i=0;i<number;i++)
?????????{
??????????System.out.println("請輸入第"+(i+1)+"輛車的序號:");
?????????????int?carNumber=scanner.nextInt();
??????????switch?(carNumber)?{
????case?1:
?????car[i]=new?AodiA4();
?????total=car[i].cost+total;
?????break;
????case?2:
?????car[i]=new?Mazida6();
?????total=car[i].cost+total;
?????break;?
????case?3:
?????car[i]=new?Pixueka6();
?????total=car[i].cost+total;
?????break;?
????case?4:
?????car[i]=new?Jinlong();
?????total=car[i].cost+total;
?????break;
????case?5:
?????car[i]=new?Songhuajiang();
?????total=car[i].cost+total;
?????break;?
????case?6:
?????car[i]=new?Yiweike();
?????total=car[i].cost+total;
?????break;
????default:
?????break;
????}
?????????}
?????????int?totalCost=0;
?????????System.out.println("請輸入租車天數:");
?????????int?days=scanner.nextInt();
?????????System.out.println(total*days);
?????????for(int?i=0;i<car.length;i++)
?????????{
??????????System.out.println(car[i].cost);
?????????}
?????????
?????????
?????????}
?????????
????????else
????????{
????????}
?}
}
1 回答

怳然如夢
TA貢獻6條經驗 獲得超2個贊
這個應該和數組的擴容有關,如果客戶輸入的車數量為50,依次選擇(數組的初始大小為6)車型號后,數組會在選擇4或5個后擴容,然后繼續選擇車型,達到臨界值再次擴容。所以最好數組的長度應該大于50,具體多少可以debug 查看。注意數組賦值有擴容,不會報空指針,但是for循環會從0循環到數組擴容后的長度-1,自然會報空指針
添加回答
舉報
0/150
提交
取消