2013-12-16 30 views
0

我想在我的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

粘貼堆棧跟蹤 – adi

+0

嘗試放置一個斷點,指出null引用異常被拋出的位置。 – Max

+0

顯示java.lang.NullPointerException \t在Coordinaten.berekenX(Coordinaten.java:73) 顯示java.lang.NullPointerException \t在Coordinaten.berekenY(Coordinaten.java:84) 這是它給人的錯誤 – user3106974

回答

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,simular錯誤可以爲其他數組中。所以確保你所有的數組都被正確初始化了!

+0

非常感謝!這對我有用。 – user3106974

相關問題