我想在我的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;
}
它只是不断给我空指针异常,我真的不知道为什么? 有谁可以提供帮助?
答案 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的初始化,可以找到其他阵列的类似错误。因此,请确保所有阵列都已正确初始化!