【问题标题】:Is there a way to get rid of this null pointer exception I am geting?有没有办法摆脱我得到的这个空指针异常?
【发布时间】:2014-11-18 13:19:58
【问题描述】:

以下代码显示了一个空指针异常

private void _settooltip() {
    localXYLineAndShapeRenderer.setBaseToolTipGenerator(new XYToolTipGenerator() {
        @Override
        public String generateToolTip(XYDataset dataset, int series, int item) {
                //String toolTip = getToolTipText();
                   // return toolTip;
            CurveSegment segment = (CurveSegment) curveEncapsulator.getSegment(currentCurve);
            if (segment != null) {
                segment.getA();
                segment.getB();
                segment.getC();
            }


            double A = segment.getA();
            double B = segment.getB();
            double C = segment.getC();


            String AA = String.valueOf(A);
            String BB = String.valueOf(B);
            String CC = String.valueOf(C);


            return "A = " + AA + " B = " + BB + " C = " + CC;



        }
    });
}

我在

上遇到异常

public String generateToolTip(XYDataset dataset, int series, int item)

谁能告诉我如何处理这个空指针异常?

【问题讨论】:

    标签: java exception error-handling tooltip


    【解决方案1】:

    这个错误可能是关于“segment”的,你可以这样试试;

            double A = 0;
            double B =  0;
            double C =  0;
    
            String AA =  "";
            String BB =  "";
            String CC =  "";
    
            if (segment != null) {
                A = segment.getA();
                B = segment.getB();
                C = segment.getC();
    
                AA = String.valueOf(A);
                BB = String.valueOf(B);
                CC = String.valueOf(C);
            }
    

    如果您分享 stck 跟踪,我们可以提供更好的帮助。

    【讨论】:

      【解决方案2】:

      我只能猜测localXYLineAndShapeRenderer 为空。请向我们展示一个初始化此变量(如果存在)的代码。

      【讨论】:

      • private DynUnitSplinerenderer localXYLineAndShapeRenderer = new DynUnitSplinerenderer(50) { @Override public void setCurrentSeriesUnit(int series, String unit) { super.setCurrentSeriesUnit(series, unit); //要更改生成方法的主体,请选择工具 |模板。 _updateCurveUnitWhenRendererUnitChanged(); } };
      • 此代码不可读。请编辑您的帖子并在此处添加格式化代码。
      【解决方案3】:

      基于此:

              CurveSegment segment = (CurveSegment) curveEncapsulator.getSegment(currentCurve);
              if (segment != null) {
                  segment.getA();
                  segment.getB();
                  segment.getC();
              }
      

      您希望 segment 有时为空。

      但是,您仍然调用这些:

              double A = segment.getA();
              double B = segment.getB();
              double C = segment.getC();
      

      不检查segment 不为空。

      实际上,if 语句中的代码没有任何意义,因为您对方法调用的返回值什么都不做。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-15
        • 1970-01-01
        • 2016-03-16
        相关资源
        最近更新 更多