System.NullPointerException:尝试取消引用null对象

时间:2014-10-17 11:56:21

标签: java class controller salesforce apex

请帮助我使用我的代码,我是Java / SF的新手,我并不了解整个代码。

以下代码应返回年龄小于18岁,年龄介于18岁至30岁之间的人的三个值。

我想学习编码并对所有行进行评论,如果出现问题,请纠正我。

目前我收到错误:

System.NullPointerException:尝试取消引用空对象

Class.testfor1_c.getEZRen:第18行,第1列 Class.testfor1_c。:第4行,第1列

public class testfor1_c {

public testfor1_c(ApexPages.StandardController stdcontroller) { 
    getEZRen();
}

public Integer Count_u18 {get; set;} // variable for people < 18
public Integer Count_1830 {get; set;} // variable for people >=18 AND <30
public Integer Count_g30 {get; set;} // variable for people >30

public void getEZRen() {

List<Einzelrisiko__c> EZRList = [SELECT Alter__c FROM Einzelrisiko__c]; // create List EZRList with the information Alter__c of all people

FOR (Einzelrisiko__c EZR : EZRList) {  // Loop thru the all people

    IF(EZR.Alter__c < 18) { Count_u18++; } // if Alter__c < 18 variable Count_u18 increase
    IF(EZR.Alter__c >= 18 && EZR.Alter__c <=30) { Count_1830++; } // if Alter__c >=18 AND <=30 variable Count_1830 increase
    IF(EZR.Alter__c > 30) { Count_g30++; } // if Alter__c > 30 variable Count_g30 increase

}

}

}

<apex:page standardcontroller="account" extensions="testfor1_c">

Anzahl {!Count_u18} // show the value of people <18
Anzahl {!Count_1830} // show the value of people >=18 AND <=30
Anzahl {!Count_g30} // show the value of people >30

</apex:page>

提前致谢, PEX

2 个答案:

答案 0 :(得分:0)

IF(EZR.Alter__c&gt; = 18&amp;&amp; EZR.Alter__c&lt; = 30){Count_1830 ++; }

在此行,您有一个空值。你必须使用check infor比较if block。

答案 1 :(得分:0)

您只需要initialize the Integer Properties

public class testfor1_c {

      public testfor1_c(ApexPages.StandardController stdcontroller) { 
          Count_u18 = 0;
          Count_1830 = 0;
          Count_g30 = 0;
          getEZRen();
      }

      public Integer Count_u18 {get; set;} // variable for people < 18
      public Integer Count_1830 {get; set;} // variable for people >=18 AND <30
      public Integer Count_g30 {get; set;} // variable for people >30

      public void getEZRen() {

         List<Einzelrisiko__c> EZRList = [SELECT Alter__c FROM Einzelrisiko__c]; // create List EZRList with the information Alter__c of all people

         for(Einzelrisiko__c EZR : EZRList) {  // Loop thru the all people

               IF(EZR.Alter__c < 18) { Count_u18++; } // if Alter__c < 18 variable Count_u18 increase
               IF(EZR.Alter__c >= 18 && EZR.Alter__c <=30) { Count_1830++; } // if Alter__c >=18 AND <=30 variable Count_1830 increase
              IF(EZR.Alter__c > 30) { Count_g30++; } // if Alter__c > 30 variable Count_g30 increase
         }
      }
}

希望它可以帮到你