2 ehomewetrust ehomewetrust 于 2016.02.01 23:30 提问

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

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

5个回答

leilba
leilba   Rxr 2016.02.02 10:24
已采纳

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

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

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

ehomewetrust
ehomewetrust 谢谢谢谢。。
接近 2 年之前 回复
caozhy
caozhy   Ds   Rxr 2016.02.01 23:35

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

caozhy
caozhy 回复ehomewetrust: 解决了就好,当然,如果能采纳下我的回答更好!
接近 2 年之前 回复
ehomewetrust
ehomewetrust 嗯嗯,很抱歉。。谢谢您!!!现在已经解决了,再谢!
接近 2 年之前 回复
caozhy
caozhy 回复ehomewetrust: 用你的电脑传代码而不是发一个图,这个图你自己看看,什么都没有
接近 2 年之前 回复
caozhy
caozhy 回复ehomewetrust: 用你的电脑传代码而不是发一个图,这个图你自己看看,什么都没有
接近 2 年之前 回复
ehomewetrust
ehomewetrust 怎么编辑问题,重新传一下图片,手机没源码。说不清楚。。用的for,索引值是从0开始的i++。。下面打印是for。判定条件是次数小于i。。打印一个用户就没问题,多个就不行,且每次都只打印最后一次输入的,仿佛前面的被覆盖。没有保存下来
接近 2 年之前 回复
rui888
rui888   Ds   Rxr 2016.02.02 09:05

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

Royal_lr
Royal_lr   Ds   Rxr 2016.02.02 09:49

明显是对象为NULL吧,,

ehomewetrust
ehomewetrust   2016.02.04 20:33

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;
}

}

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!