【问题标题】:Why I am getting this error "Caused by: java.lang.ArithmeticException: divide by zero"?为什么我收到此错误“原因:java.lang.ArithmeticException:除以零”?
【发布时间】:2017-05-09 07:21:58
【问题描述】:

如何停止低于

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));

所以,如果有人知道问题的解决方案或给我解决此错误的想法,请告诉我。

【问题讨论】:

  • 152行DialScreen.java有什么内容?
  • 我非常怀疑您是否真的需要提供超过 700 行代码来演示错误。错误(应该以纯文本在问题中发布)表明问题出在 RoundKnob.java 的第 29 行,除以 0。(这是 real 的第 29 行 代码,而不是您提供的不包含任何导入的代码。)请阅读codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question
  • 这么多...代码...
  • 只有一行的代码,为什么不把代码粘贴到这里?
  • 更新您的输入并提供一个简单的minimal reproducible example。除此之外:异常告诉您除以零。你对此有什么不明白的地方?你不链接或任何东西。您在这里放置了所有相关代码;通常包括堆栈跟踪。是的,你是新来的。所以请您花一些时间在help center 上了解如何/在这里问什么。

标签: java android divide-by-zero


【解决方案1】:

让我们看看这一行:

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));

注意不同的括号...

【讨论】:

  • 当我改变这个 int a = Math.round((float)(360/size));到 int a = Math.round(((float)360/size));当时也会产生错误。如果你知道第二种方法,请告诉我。
  • 首先要找到错误发生时size 的实际值。你可以从那里继续......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-13
  • 2018-06-22
  • 2016-01-01
相关资源
最近更新 更多