为什么我会收到此错误 "Caused by: java.lang.ArithmeticException: divide by zero"?
Why I am getting this error "Caused by: java.lang.ArithmeticException: divide by zero"?
如何停止小于 <= 0 的值及其抛出异常。
Logcat : Logcat error
RoundKnobButton.java 文件:
int size = GetJsonData.frequency.size();
int a = Math.round((float)(360/size));
int b = 0;
try {
Log.i("RoundKnob",".....Try");
b = Math.round((float)(scaleDegrees/a));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.i("RoundKnob", ".....catch");
}
DialScreen.java 文件:
rv = new RoundKnobButton(this, R.drawable.circle, R.drawable.circle1,
R.drawable.circle1, m_Inst.Scale(350), m_Inst.Scale(350));
所以,如果有人知道问题解决方案或给我解决此错误的想法,请告诉我。
让我们看看这一行:
int a = Math.round((float)(360/size));
并假设 size==361
.
因为 size
是一个 int
,我们有一个整数除法,360/size
等于 0
。然后将其转换为 float
,结果为 0.0f
,将其四舍五入(给定 0.0f
)并将其分配给 int
,结果也是 0
。
您可能想做的是
int a = Math.round(((float)360/size));
注意不同的括号...
如何停止小于 <= 0 的值及其抛出异常。
Logcat : Logcat error
RoundKnobButton.java 文件:
int size = GetJsonData.frequency.size();
int a = Math.round((float)(360/size));
int b = 0;
try {
Log.i("RoundKnob",".....Try");
b = Math.round((float)(scaleDegrees/a));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.i("RoundKnob", ".....catch");
}
DialScreen.java 文件:
rv = new RoundKnobButton(this, R.drawable.circle, R.drawable.circle1,
R.drawable.circle1, m_Inst.Scale(350), m_Inst.Scale(350));
所以,如果有人知道问题解决方案或给我解决此错误的想法,请告诉我。
让我们看看这一行:
int a = Math.round((float)(360/size));
并假设 size==361
.
因为 size
是一个 int
,我们有一个整数除法,360/size
等于 0
。然后将其转换为 float
,结果为 0.0f
,将其四舍五入(给定 0.0f
)并将其分配给 int
,结果也是 0
。
您可能想做的是
int a = Math.round(((float)360/size));
注意不同的括号...