Java中的票证系统,但在创建成员时主中存在NullPointerException

Java中的票证系统,但在创建成员时主中存在NullPointerException,java,oop,nullpointerexception,Java,Oop,Nullpointerexception,我正在写一个在售票处工作的程序。有两个班,乘客和预订。但当我创建passenger类时,代码的“if”部分不起作用,并给出了errror,即nullpointerexception其他部分正在发挥作用。以下是输出和错误: run: Choose option for processing; 1. Add a new passenger 2. Add a reservation for an existing Passenger 3. Display reservations 4. Cance

我正在写一个在售票处工作的程序。有两个班,乘客和预订。但当我创建passenger类时,代码的“if”部分不起作用,并给出了errror,即nullpointerexception其他部分正在发挥作用。以下是输出和错误:

run:
Choose option for processing; 
1. Add a new passenger
2. Add a reservation for an existing Passenger 
3. Display reservations
4. Cancel reservation
0. Quit
1
enter a name :
gokhan
adress : 
nas
Number :
212
password : 
123456
Exception in thread "main" java.lang.NullPointerException
at project1.testClass.main(testClass.java:47)
Java Result: 1
BUILD SUCCESSFUL (total time: 7 seconds)   // what a succesful.
消息说这行有错误

  System.out.println("password : ");
  password=input.nextLine();
    if(password.equals("ffffff")){
  System.out.println("Password should be six characters!\nYour password is: "+password);
    break ;
     }
     else { 
  passenger[count]= new Passenger(name,adress,number,password);   //  this line 
  count++;
  passenger[count].getAccID();
  System.out.println("Password should be six characters!\nYour password is: "+password);
    break ;
     }
这是乘客舱:

 public Passenger(String Name, String adress, String number, String password){

count++;
accID+=count;
AccountList[count]=accID;


this.Name=Name;

this.adress=adress;
this.number=number;

if(checkPw(password)==true){
this.password=password;
}
else { 
    this.password="ffffff";
}

private boolean checkPw(String password){

int length;
length = password.length();

if (length != 6) {
    return false;
    }
if (password.charAt(0)=='0'){
   return false;
}
else {
    for (int i = 0; i < password.length()-1 ;i++){
    if((password.charAt(i))==(password.charAt(i+1))){
        return false;
    }
    }
}
return true;

}
公共乘客(字符串名称、字符串地址、字符串编号、字符串密码){
计数++;
accID+=计数;
AccountList[计数]=账户ID;
this.Name=Name;
这个。地址=地址;
这个。数字=数字;
if(checkPw(password)==true){
this.password=密码;
}
否则{
this.password=“ffffff”;
}
私有布尔校验码(字符串密码){
整数长度;
长度=密码。长度();
如果(长度!=6){
返回false;
}
if(password.charAt(0)='0'){
返回false;
}
否则{
对于(int i=0;i
您认为您初始化了乘客,但实际上您没有初始化。这是唯一可能导致该行出现NPE的原因。

通常在检查字符串与文字字符串时,我会更改顺序以防止任何NPE;v.g.
if(“ffffff”.equals(密码))
。但这并不能解释为什么
密码
在该行为空。这可能表明密码数组为空。问题是,您是否初始化
乘客[]
?您是如何定义
输入的
?我觉得奇怪的是您没有使用
系统。在
中,当它为“else”时,我不ffffff。当它为“else”时,它会自动为空。但它也不起作用。那么,我能做些什么来解决这个问题呢?private static Passenger[]乘客:?我猜你是另一个认为可以创建对象的程序员。事实并非如此!你必须使用Java中的
new
,来创建对象。@GökhanNas声明和初始化不是同一回事,答案是+1。抱歉,我的语言是学习Java不是英语,所以我不知道一些术语。谢谢!