Java Android Math.sqrt返回0
x=0.965(…)y=-15.285(…)。这个abs是后来添加的,当时我正试图解决这个问题。promien总是0,我不知道为什么。我重新启动了Android Studio,没有帮助。有什么我看不见的吗Java Android Math.sqrt返回0,java,android,sqrt,Java,Android,Sqrt,x=0.965(…)y=-15.285(…)。这个abs是后来添加的,当时我正试图解决这个问题。promien总是0,我不知道为什么。我重新启动了Android Studio,没有帮助。有什么我看不见的吗 this.promien = Math.sqrt(Math.abs((this.x * this.x) + (this.y * this.y))); 我正在调试这个应用程序,所以我知道它是0。当x和y不等于0时,对数据库的请求也返回0 在这里,我举例说明: public class Pom
this.promien = Math.sqrt(Math.abs((this.x * this.x) + (this.y * this.y)));
我正在调试这个应用程序,所以我知道它是0。当x和y不等于0时,对数据库的请求也返回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;
x,y,z是磁强计的值,你不需要abs,因为z*z总是非负的,你需要加两个非负的。你不可能得到零,因为其中一个产品是负数。很高兴看到您是如何创建此对象的 如果我这样定义Pomiary:
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();
}
这样称呼它:
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);
}
我得到了非零输出。定义x和y的类型是什么?Promien是什么类型?您如何发现结果是0?您需要向我们展示一个完整的、可验证的示例。我可以向你保证,
Math.sqrt
和Math.abs
两者都有效。如果你以任何方式对值进行平方运算,abs
的意义是什么?错误模式说x和y都不是0。promien的值是什么?(注意,我编辑了我的答案。)this.promien是0,这就是问题所在。我在我的1中从调试模式上传了pic。postI将其添加到类中,我从中获得Pomiary类的值:double promien=Math.sqrt(Math.pow(x,2)+Math.pow(y,2));在调试模式下,我得到错误:找不到局部变量“promien”。。。这和那个问题有什么关系吗?我尝试重新启动电脑、手机和应用程序。什么也没发生…promien
不是局部变量。它是类型为Pomiary
的对象的字段。请参阅我最近的编辑,查看this.xx
和x
指的是内存中的不同位置。因此,如果不定义promien
,则this.promien
引用Pomiary
的“this”实例中不存在的字段。您应该在答案中发布生成输出的代码。
public class JavaLab23{
public static void main(String[] args) {
Pomiary p = new Pomiary(3,4,5,null,0);
System.out.println(p.promien);
}
}