2015-10-13 110 views
2
this.promien = Math.sqrt(Math.abs((this.x * this.x) + (this.y * this.y))); 

並且x = 0.965(...)y = -15.285(...)。當我試圖解決這個問題時,後面加了這個abs。 this.promien總是0,我不知道爲什麼。我重新啓動Android Studio,沒有幫助。有什麼我看不到的?Android Math.sqrt返回0

public class Pomiary { 

    public Pomiary() { 

    } 


    public Pomiary(double x, double y, double z, Date data, int seria) { 
     this.x = x; 
     this.y = y; 
     this.z = z; 
     this.data = data; 
     this.promien = Math.sqrt(Math.abs((this.x * this.x) + (this.y * this.y))); 
     this.suma = Math.abs(x) + Math.abs(y) + Math.abs(z); 
     this.seria = seria; 


    } 
    @DatabaseField(generatedId = true) 
    int id; 

    @DatabaseField(dataType = DataType.DATE_STRING, format = "yyyy/MM/dd HH:mm:ss.SSS") 
    Date data; 

    @DatabaseField 
    double x; 

    @DatabaseField 
    double y; 

    @DatabaseField 
    double z; 

    @DatabaseField 
    double suma; 

    @DatabaseField 
    int seria; 

    @DatabaseField 
    double promien; 

而且我調試這個應用程序,這就是我怎麼知道它是0。同樣要求數據庫返回0,當x和y不等於0。

Debug mode

我在哪裏實例:

if (MainActivity.pomiary) { 
double promien = Math.sqrt(Math.pow(X,2) + Math.pow(Y,2)); 
        Pomiary pomiary = null; 
        try { 
         pomiary = 
           new Pomiary(X, Y, Z, 
             dateFormat.parse(dateFormat.format(new Date())), iloscZapisanychSeriiWBazie); 
        } catch (ParseException e) { 
         e.printStackTrace(); 
        } 

並且x,y,z是從磁力計值

+0

x和y的定義是什麼? – hotzst

+1

什麼類型是promien – danysz

+1

你怎麼發現結果是0? – laalto

回答

0

您不需要abs,因爲z * z總是非負的,並且您添加了兩個非負數。您無法獲得零,因爲其中一個產品是負面的。很高興看到你是如何創建這個對象的。

如果我定義Pomiary像這樣:

public class Pomiary { 
    double xx; 
    double yy; 
    double zz; 
    Date dataa; 
    double promien; 
    double suma; 
    int seria; 

    public Pomiary() 
    { 

    } 
    public Pomiary(double x, double y, double z, Date data, int seria) 
    { 
     this.xx = x; 
     this.yy = y; 
     this.zz = z; 
     this.dataa = data; 
     this.promien = Math.sqrt(this.xx * this.xx + yy * this.yy); 
     this.suma = Math.abs(x) + Math.abs(y) + Math.abs(z); 
     this.seria = seria; 
     System.out.println(this.promien); 
    } 

,並調用它像這樣:

public class JavaLab23{ 

    public static void main(String[] args) { 

     Pomiary p = new Pomiary(3,4,5,null,0); 
     System.out.println(p.promien); 
    } 

} 

我得到非零輸出。

+0

調試模式表示x和y都不是0 – meDarq

+0

'this.promien'的價值是什麼? (請注意,我編輯了我的答案。) – DSlomer64

+0

this.promien爲0,這就是問題所在。我上傳了來自調試模式的圖片在我的帖子 – meDarq