我正在玩Java oop,以记住并能够跳入android开发。我有一个带有ContactManager和Contact类的联系人管理器项目。在ContactManager中,我具有addContact方法,该方法将联系人添加到myFriends数组中,还有displayAll方法,该方法具有遍历数组的循环,可打印来自每个对象的数据。当我从main方法调用该函数时,它将在打印对象属性的行中抛出nullpointerexception。但是,当我尝试从main方法(使用myContactManager.myfriends [i] .name)访问该数组中的特定元素时,我可以毫无问题地访问它。 另外重要的一点是,该功能实际上会打印对象属性,但同时会抛出异常。
主类:
import java.util.Scanner;
public class Main {
public static void main(String [] args){
ContactManager myContactManager = new ContactManager();
Scanner scan = new Scanner(System.in);
System.out.println("Ingrese la cantidad de contactos: ");
int cantidad = scan.nextInt();
scan.nextLine();
for(int i = 0; i < cantidad; i++){
System.out.println("Ingrese el nombre, numero y correo
del contacto: ");
String nombre = scan.nextLine();
String numero = scan.nextLine();
String correo = scan.nextLine();
Contact contacto = new Contact(nombre, numero, correo);
myContactManager.addContact(contacto);
}
myContactManager.displayAll();
//System.out.println(myContactManager.myFriends[0].name);
}
}
ContactManager类:
public class ContactManager {
Contact [] myFriends;
int friendsCount;
ContactManager(){
this.friendsCount = 0;
this.myFriends = new Contact[500];
}
void addContact(Contact contact){
myFriends[friendsCount] = contact;
friendsCount++;
}
Contact searchContact(String searchName){
for(int i = 0; i < myFriends.length; i++){
if(myFriends[i].name == searchName){
return myFriends[i];
}
}
return null;
}
void displayAll() {
for(int i = 0; i < myFriends.length; i++){
String message = "nombre: " + myFriends[i].name +
"\nnumero: " + myFriends[i].number +
"\nmail: " + myFriends[i].mail;
System.out.println("-------");
System.out.println(message);
}
}
}
联系方式:
public class Contact {
String name;
String number;
String mail;
Contact(String name, String number, String mail){
this.name = name;
this.number = number;
this.mail = mail;
}
}
我已经阅读了有关此异常的其他问题的其他答案,但是正如我所说的,我能够使用每个元素的索引来访问数组的元素,并且该函数正在打印我询问的数据所以这就是为什么我不明白为什么我总是得到nullPointerException的原因。