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

И x = 0.965 (...) y = -15.285 (...). Этот абс был добавлен позже, когда я пытался решить проблему. this.promien всегда 0, и я не знаю, почему. I restarter 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, если х и у не равны 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(); 
        } 

И х, у, г являются значения от магнитометра

+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, вот в чем проблема. Я загрузил pic из режима отладки в моем сообщении 1. – meDarq