我收到一個(gè)錯(cuò)誤,指出在成員線程“main”java.lang.NullPointerException 中出現(xiàn)異常。init (Members.java:23) at Main.main(Main.java:9) 而我想要做的是使用 StringTokenizer 將來自文件輸入的字符串存儲(chǔ)到對(duì)象數(shù)組中。在main中,第9行只是初始化對(duì)象,代碼是:Members members = new Members("users.txt");第 23 行是類成員是: users[nm].setId(st.nextToken());我無法弄清楚錯(cuò)誤是什么。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貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊
您正在創(chuàng)建一個(gè)可以容納 的數(shù)組Users,但據(jù)我所知,您沒有創(chuàng)建User. 當(dāng)您第一次嘗試引用users[nm]它的值時(shí),它將是null.
你可以這樣做:
users[nm] = new User();
users[nm].setId(st.nextToken());

慕的地6264312
TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊
罪魁禍?zhǔn)资?nbsp;User [] users = new User[100]; //Assuming max
這僅創(chuàng)建了一個(gè)大小為 100 的數(shù)組。不創(chuàng)建任何對(duì)象。您正在設(shè)置Id
為空對(duì)象。在設(shè)置 Id 之前,您必須初始化您的用戶對(duì)象。
添加回答
舉報(bào)
0/150
提交
取消