Java 具有20个扫描目的的Wifi扫描仪

Java 具有20个扫描目的的Wifi扫描仪,java,android,class,android-wifi,Java,Android,Class,Android Wifi,我试图构建一个类数组,并将一些值放入对象,但它仍然显示空指针异常 我的代码是: class WifiScanReceiver extends BroadcastReceiver { @SuppressLint("UseValueOf") public void onReceive(Context c, Intent intent) { List<ScanResult> wifilist = wifi.getScan

我试图构建一个类数组,并将一些值放入对象,但它仍然显示空指针异常

我的代码是:

class WifiScanReceiver extends BroadcastReceiver {
          @SuppressLint("UseValueOf")
          public void onReceive(Context c, Intent intent) {

              List<ScanResult> wifilist = wifi.getScanResults();
                 info = wifi.getConnectionInfo();
                int k = wifilist.size(); 


                scan_data[] data = new scan_data[k];

             for (int i=0;i<20;i++){
                wifi.startScan();
                List<ScanResult> wifilist1 = wifi.getScanResults();

                int l = wifilist1.size();

                if (i==0){
                for (int j=0;j<l;j++){
                    data[j].ssid = wifilist1.get(j).SSID.toString();
                    data[j].bssid = wifilist1.get(j).BSSID.toString();
                    data[j].lvl = wifilist1.get(j).level;
                    data[j].count++;
                }

问题是扫描_数据数组未使用对象初始化

scan_data[] data = new scan_data[k];
这只是初始化数组,而不是将对象放入其中。你必须明确地这样做 所以在你的for循环中。创建scan_数据对象并将所有值放入其中,然后将其放入数据[j]

         for (int j=0;j<l;j++){
                scan_data sData = new scan_data();
  //            set all desired values in sData from ScanData
                data[j] = sData;
            }

用于(int j=0;jWell这只是一个建议,建议您首先调试代码,确定条件失败的点以及原因。您的
数据
数组的所有索引都为
null
,直到出现
NPE
的那一行,它才被初始化。@RaviBhatt这不正确。列表索引将为
0
l-1
so
j@Sanjeev是的,你说得对。很好。@AnkitLamba我如何创建动态数组。我明白你的意思了
         for (int j=0;j<l;j++){
                scan_data sData = new scan_data();
  //            set all desired values in sData from ScanData
                data[j] = sData;
            }