创建了一个类Bus如下:
package hw_2;
import java.util.Scanner;
public class Bus {
String type;
int engine_number;
int seating_capacity;
int route;
int busIsavl;
int sum;
void add()//sum为汽车总数。
{
int e_n,s_c;
String ty;
System.out.println("请输入汽车的类型:");
Scanner input=new Scanner(System.in);
//int j=input.nextInt();//读入一个字符串并解析成一个int数字
ty=input.nextLine();//读入一行字符串
System.out.println("请输入汽车引擎号:");
Scanner input1=new Scanner(System.in);
e_n=input1.nextInt();
System.out.println("请输入汽车座位数:");
s_c=input1.nextInt();
System.out.println("请输入该汽车将在几号路线运行:");
route=input1.nextInt();
type=ty;
engine_number=e_n;
seating_capacity=s_c;
//route=route;
busIsavl=1;
//Bus(){}
sum++;
}
void delete(int i,Bus a[])
{ a[i].busIsavl=0;
}
void showBus(Bus a[])
{
for (int i=0;i<sum;i++)
{
if (a[i].busIsavl==1)
{
System.out.println("第"+i+"辆汽车的类型为"+a[i].type);
System.out.println("第"+i+"辆汽车的引擎号为"+a[i].engine_number);
System.out.println("第"+i+"辆汽车的座位数为"+a[i].seating_capacity);
System.out.println("第"+i+"辆汽车的路线名称为"+a[i].route);
}
}
}
}
主类如下:
public class Hw_2 {
public static void main(String[] args)
{
Bus []array;
array=new Bus[10];
array[0].add();
/*本来打算在这地方调用Bus中的方法add()来增加新的车辆信息,但是总是报错如下:
Exception in thread "main" java.lang.NullPointerException
at hw_2.Hw_2.main(Hw_2.java:11)
定义的array是一个类的数组,array[0]是数组中的一个,是一个Bus对象,所以应该是能调用方法add()的,但是就是出问题。
*/
}
}
------解决方案--------------------
array[0] = new Bus();
------解决方案--------------------
(Bus)array[0].add();
强转一下类型,编译器可能认为是一个Object对象,没有那个add方法。
------解决方案--------------------
数组的调用,即是数组中元素的调用,array[i].方法(),和普通的调用没什么区别的;