Java 由于NullPointerException而导致的错误

Java 由于NullPointerException而导致的错误,java,nullpointerexception,jsoup,Java,Nullpointerexception,Jsoup,课堂测试 package test; import java.io.IOException; import org.jsoup.*; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.util.Scanner; public class test { public static void main(String[] a

课堂测试

package test;
import java.io.IOException;
import org.jsoup.*;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.util.Scanner;
public class test {
    public static void main(String[] args) throws IOException {
        Scanner in = new Scanner(System.in);
        String  url, artistIn, artist, base;
        SongUrl[] obj = new SongUrl[100];
        base = "http://lyrics.wikia.com/";
        int count = 0;
        System.out.println("Enter an artist");
        artistIn = in.nextLine();
        artist = artistIn.replace(' ', '_');
        url = "http://lyrics.wikia.com/api.php?func=getSong&artist=" + artist + "&fmt=html";
        Document doc = Jsoup.connect(url).get();
        Elements a = doc.select("a[href]");
        for(Element alink : a){
            obj[count] = new SongUrl();
            obj[count].urlSong = alink.toString();
            count++;
            obj[count].serialNo = count;      //Faced NPE on this line
            System.out.println(count + " " + alink.html());
        }
    }
}
类SongUrl

public class SongUrl {
    int serialNo;
    String urlSong;
}
我在线路上遇到了NullPointerException
obj[count].serialNo=count。令人惊讶的是,如果要发生NPE,它应该发生在这一行
obj[count].urlSong=alink.toString()它之前的代码。我不知道出了什么问题。

您增加了
计数
,现在它指向数组中的下一项
null

  obj[count].urlSong = alink.toString();
  count++;                      // this is causing the issue
  obj[count].serialNo = count;  // obj[count] is null  
增加for循环末尾的
计数


我建议您在声明下方进行初始化,以避免此类
NullPointerException

 SongUrl[] obj = new SongUrl[100];
 for(int i=0;i<obj.length;i++){
        obj[i] = new SongUrl();
 }

在设置
serialNo
之前增加
count
——由于数组的此索引尚未初始化,因此将得到
NullPointerException
。为了避免这种情况,您应该增加
count
last:

obj[count] = new SongUrl();
obj[count].urlSong = alink.toString();
obj[count].serialNo = count + 1; // Note the +1 - count is incremented afterwards
count++;

您在这两行之间增加了
count
obj[count] = new SongUrl();
obj[count].urlSong = alink.toString();
obj[count].serialNo = count + 1; // Note the +1 - count is incremented afterwards
count++;