为什么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
提交
取消