【问题标题】:java.lang.ArithmeticException: divide by zero errorjava.lang.ArithmeticException:除以零错误
【发布时间】:2017-01-24 18:59:59
【问题描述】:

我得到一个除以零的错误,这是没有意义的,因为我的两个变量都有数据。

String str = "54";
int i = 0, b = 0;

while(i < str.length()){
    b = b + Integer.parseInt(Character.toString(str.charAt(i)));
    i++;
}

int ratings = (b / str.length());

这是错误所指的行,b 的值为 9(它是一个整数),str 的长度是 2(它也是一个整数)。

当我尝试访问除法时,它给了我这个错误,但如果我访问这两个变量,我会毫无问题地得到它们的值。

我还尝试创建一个名为 strLength 的单独变量并在那里检索长度,但错误仍然存​​在。

【问题讨论】:

  • 你确定 str 包含它应该包含的值吗?在除法之前添加这一行 - System.out.println(""+str.length()); 以确保。
  • 电脑不会说谎!你能把代码贴在这行之前吗?
  • 实际上有两种可能性:str.length() 出于某种原因确实为零,或者错误来自其他代码。如果你只给我们看一行代码,我们真的很难说到底发生了什么。
  • 奇怪...似乎在除法之前突然将 str.length 变为 0,将尝试找到解决方案
  • 我猜反对票主要是因为如果没有 str 的值,您的问题就无法重现。我们只能猜测值可能是什么......

标签: java android exception


【解决方案1】:

我无法模拟您的问题,但我做了一个示例,它可以正常工作。但是,当 str 为空时,会发生 java.lang.ArithmeticException: / by zero 错误。如果错误仍然存​​在,请发布更多信息。

示例:

public static void main(String[] args) {
    int b = 9;
    String str = "AB";

    int ratings = (b / str.length());

    System.out.println(ratings);
}

【讨论】:

  • 我的问题是我有一串数字,现在是54,但以后会改变。我必须从字符串中提取所有数字并将它们相加,将其转换为整数,然后除以该字符串的长度(我必须做一个平均值)
  • 你可以发布字符串数字的例子吗?
  • 根据他的解释,我是这样理解的: public static void main(String[] args) { String a = "12345"; //123456.............54 String[] x = a.split("");整数添加 = 0; for (String x1 : x) { add += Integer.parseInt(x1); } System.out.println("平均:" + (add / a.length())); }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多