理解不能的java空指针异常求教

一个用户时可以打印,多了就不行。求教。图片图片

我依稀看到你是这样写的:
User[] user = new User[10];

实际上,在这句之后要加上:
for (int i=0;i<10;i++)
user[i] = new User();

不然的话,user[i]都会是null,所以,你下面的user[j].username会直接报空指针。
这个是java中数组对象的性质

图太小,看不清你的代码。检查下你是不是有对象为null

图是真的看不了,建议打log 调试。

import java.util.*;
class Demo11
{
public static void main(String[] args)
{
System.out.println("欢迎你来到月球!");
Scanner sc=new Scanner(System.in);
User[] user=new User[10];
int i=0;
while(true){
System.out.println("请选择功能: 注册(a) 查看用户(b)");
String s=sc.next();
if (s.equals("a")){
System.out.println("请输入用户名:");
String username=sc.next();
System.out.println("请输入密码:");
String password=sc.next();
for (int j=0;j<i+1 ;j++ )
{
user[i++]=new User(username,password);
}
}else if (s.equals("b")){
for (int j=0;j<i+1 ;j++ ){
System.out.println("当前用户为:");
System.out.println("用户名:"+user[j].username+"密码:"+user[j].password);
}
}else{
System.out.println("你的输入有误,系统退出!");
break;
}
}
}
}
class User
{
String username;

String password;

User(String username,String password){
    this.username=username;
    this.password=password;
}

}

改成这样,报错是索引值越界- -!!