当前位置: 代码迷 >> Eclipse >> 运行空指针怎么解决?貌似逻辑上没有关问题
  详细解决方案

运行空指针怎么解决?貌似逻辑上没有关问题

热度:103   发布时间:2016-04-23 00:46:46.0
运行空指针如何解决?貌似逻辑上没问题?
运行到main函数的第一个数组赋值总是提示空指针,无法继续。我前一行不是已经进行初始化分配空间了吗?求大神解答,本人大一学生一枚。下面是我的代码。谢谢

import java.util.Scanner;
class Foodlist{ //食品列表类
int code;
String name;
double price;
}
public class bls0404 {
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
/* 欢迎*/System.out.println("Dear customer, welcome to our restaurant. ");
System.out.println("A la carte system below you will use this restaurant. You can enter your dishes like number, the system will automatically calculate the cost of your meal.");
System.out.println("How many meals?(including youself)");//询问人数
int p=sc.nextInt();//保存用餐人数
System.out.println("Your tea fee:"+p*3);//输出茶位费

Foodlist fl[]=new Foodlist[7];//保存菜品
fl[0].code =1;
fl[0].name ="Curry beef with rice";
fl[0].price =40.00;

fl[1].code = 2;
fl[1].name = "Sushi set meal";
fl[1].price = 65.00;

fl[2].code = 3;
fl[2].name = "YangZhou fried rice";
fl[2].price = 45.00;

fl[3].code = 4;
fl[3].name = "Sirloin Steak with Spaghetti";
fl[3].price = 72.00;

fl[4].code = 5;
fl[4].name = "Chicken vegetable roll";
fl[4].price = 42.00;

fl[5].code = 21;//饮料
fl[5].name = "Soft drink";
fl[5].price = 10.00;

fl[6].code = 22;
fl[6].name = "Red wine";
fl[6].price = 15.00;

fl[7].code = 23;
fl[7].name = "Beer";
fl[7].price = 15.00;

for(int i=0;i<=fl.length;i++)//列出菜品
System.out.println("Food code"+fl[i].code+"Food name"+fl[i].name+"Food price"+fl[i].price);

System.out.println("Please enter one code of order:");
int b=sc.nextInt();


System.out.println("Anymore?(0-Yes;1-No)");
int c=sc.nextInt();

}
}

------解决方案--------------------

Foodlist fl[]=new Foodlist[7];
这里面现在应该是7个空元素,也就数null
所有在这fl[0].code =1;就出空指针了!

------解决方案--------------------
一共7个元素,你都对8个元素赋值了。。。
------解决方案--------------------
应该这样写
Foodlist fl[]=new Foodlist[7];//保存菜品
Foodlist  f = new Foodlist  ();
f.code =1;
f.name ="Curry beef with rice";
f.price =40.00;
f1[0] = f ;

  相关解决方案