为了账号安全,请及时绑定邮箱和手机立即绑定

父类引用指向子类对象

父类引用指向子类对象

慕圣4665238 2017-11-23 09:38:39
为什么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,自然会报空指针

查看完整回答
反对 回复 2017-11-29
  • 1 回答
  • 0 关注
  • 872 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信