为了账号安全,请及时绑定邮箱和手机立即绑定

我想使用 stringtokenizer 将字符串存储到对象 User 数组中,但收到错误消息

我想使用 stringtokenizer 将字符串存储到对象 User 数组中,但收到错误消息

www说 2021-11-17 10:15:58
我收到一个错误,指出在成员线程“main”java.lang.NullPointerException 中出现异常。init (Members.java:23) at Main.main(Main.java:9) 而我想要做的是使用 StringTokenizer 将来自文件输入的字符串存储到对象数组中。在main中,第9行只是初始化对象,代码是:Members members = new Members("users.txt");第 23 行是类成员是: users[nm].setId(st.nextToken());我无法弄清楚错误是什么。import java.io.*;import java.util.*;public class Members {int nm = 0; //Number of membersUser [] users = new User[100]; //Assuming max number of user is 100StringTokenizer st;Scanner s1;File f1;String var1; //this string determines if it a standard or admin user;String var2;public Members(String fn) throws FileNotFoundException {    f1 = new File(fn);    s1 = new Scanner(f1);    while(s1.hasNext()) {        //System.out.println("true");        st = new StringTokenizer(s1.nextLine(),"/");        while(st.hasMoreTokens())        {            //System.out.print(((String)st.nextToken()));            users[nm].setId(st.nextToken());            users[nm].setPw(st.nextToken());            var1 = st.nextToken();            users[nm].setFn(st.nextToken());            users[nm].setLn(st.nextToken());            users[nm].setEmail(st.nextToken());            //System.out.print(st.nextToken() + " ");            if(var1.equals("Admin")) {                users[nm].setAdmin(true);                ((Admin)users[nm]).setRank(st.nextToken());            }            if(var1.equals("Standard")) {                users[nm].setStandard(true);                while(st.hasMoreTokens())                {                    ((Standard)users[nm]).addCar(st.nextToken());                }            }        }        nm++;        System.out.println();    }    s1.close();    System.out.println("Number of members: " + nm);}
查看完整描述

2 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

您正在创建一个可以容纳 的数组Users,但据我所知,您没有创建User. 当您第一次尝试引用users[nm]它的值时,它将是null.


你可以这样做:


users[nm] = new User();

users[nm].setId(st.nextToken());


查看完整回答
反对 回复 2021-11-17
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

罪魁祸首是 User [] users = new User[100]; //Assuming max

这仅创建了一个大小为 100 的数组。不创建任何对象。您正在设置Id为空对象。在设置 Id 之前,您必须初始化您的用户对象。


查看完整回答
反对 回复 2021-11-17
  • 2 回答
  • 0 关注
  • 140 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信