-1

我们将在以下循环中查找错误的任务作为练习。循环的任务是输出一个数字在“.”之前的位数,即“32782.12”将等于5。现在到目前为止,我真的没有看到任何错误。唯一的情况是输入 = 0 不会导致正确答案 - 你有什么提示吗?

public class countingDigits {
    public static void main(String[] args) {
        double number = 88888888.99;

        for(int digits=0; digits<6; ++digits) {
            if (number*number < 1) {
                System.out.println("The number has  " + digits + " digits");
                break;
            }
            number /= 10;
        }
    }
}
4

2 回答 2

2

将特殊情况分开处理并不罕见:

  • 0
  • -0(如果适用...)
  • 数据类型的最大值 (Double.MAX_VALUE)
  • 数据类型的最小值 (Double.MIN_VALUE)
  • 等等

所以我会这样处理0

if(number==0.0 ) {
    return 1;
}
于 2013-10-05T19:29:58.177 回答
1
public void countingDigits {
    public static void main(String[] args){
    double number = 88888888.99;

    if (number == 0){
      System.out.println("The number has  1 digits");
    }else {
       for(int digits=0; digits<20; ++digits) {
           if (number < 1) {
               System.out.println("The number has  " + digits + " digits");
               break;
           }
            number /= 10;
       }
    }

  }
于 2013-10-05T19:33:15.060 回答