Java中的票证系统,但在创建成员时主中存在NullPointerException
我正在写一个在售票处工作的程序。有两个班,乘客和预订。但当我创建passenger类时,代码的“if”部分不起作用,并给出了errror,即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
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不是英语,所以我不知道一些术语。谢谢!