在数组中计算

时间:2013-12-16 11:06:29

标签: java

我想在我的coördinaat类中计算x和y值。我有另一个名为arrayreader的类,它只读取一个文本文件并返回它。

public class Coordinaten
{  

    public static final double SCHERMBREEDTE = 1200;
    public static final double SCHERMHOOGTE = 1000;

    private double tMax, tMin, sMax, sMin;
    private Double[] ecgWaardes, xWaardes, yWaardes, coordinaatX;

    public Coordinaten()
    {
        ArrayReader ecg1 = new ArrayReader(); 
        ecg1.leesBestand();
        ecg1.getLijnen();
        ecgWaardes = ecg1.getLijnen();


    }

    public double bepaalTMax()
    /**
     * Deze method geeft de tijd in miliseconden van de ECG weer.
     */
    {
        tMax = (ecgWaardes.length * 2);
        return tMax;

    }

    public double bepaalSMax() 
    {

        for (int i = 0; i < ecgWaardes.length; i++)
        {
            sMax = ecgWaardes[0];
            if (ecgWaardes[i] > sMax)
            {
                sMax = ecgWaardes[i];
            }
        }
        return sMax;
    }

    public double bepaalSMin() 
    {
        for (int i = 0; i < ecgWaardes.length; i++)
        {
            sMin = ecgWaardes[0];
            if (ecgWaardes[i] < sMin)
            {
                sMin = ecgWaardes[i];
            }
        }
        return sMin;
    }

    public Double[] berekenX()
    {
        for (int i = 0; i < ecgWaardes.length; i++)
        {
            coordinaatX = new Double[i]; 
            xWaardes [i] = (double)((((i+1) *2) - 0) * (SCHERMBREEDTE-1) / (tMax - 0));

        }
        return xWaardes;
    }

    public Double[] berekenY()
    {
        for (int i = 0; i < ecgWaardes.length; i++)
        {
            yWaardes = new Double[i]; 
            yWaardes [i] = (double)(((ecgWaardes[i] - sMax) * (SCHERMHOOGTE-1)) / (sMin - sMax));

        }
        return yWaardes;
    }

它只是不断给我空指针异常,我真的不知道为什么? 有谁可以提供帮助?

1 个答案:

答案 0 :(得分:0)

当你初始化yWaardes,xWaardes,......你把初始化放在for循环中!这会导致您的阵列重新初始化并(并调整大小)for中的每个循环!您应该只初始化一次数组!这可以在for循环之外完成,并使其成为ecgWaardes.length

public Double[] berekenY()
    {
        yWaardes = new Double[ecgWaardes.length]; 
        for (int i = 0; i < ecgWaardes.length; i++)
        {

            yWaardes [i] = (double)(((ecgWaardes[i] - sMax) * (SCHERMHOOGTE-1)) / (sMin - sMax));

        }
        return yWaardes;
    }

编辑:请注意,上述内容仅适用于yWaardes的初始化,可以找到其他阵列的类似错误。因此,请确保所有阵列都已正确初始化!