【发布时间】:2019-08-19 19:49:38
【问题描述】:
我似乎无法弄清楚这一点。它始终显示该号码有 4 位数字。我将输入限制限制在 4 位,我相信你可以看到。
我尝试过更改模数运算符和其他基本解决方案。
//2019 年 3 月 28 日 /*使用 do while 循环编写一个 Java 程序,该循环接受用户输入的正整数或负整数,并报告该数字包含多少位。 * 当用户输入 0 时,循环应该退出。 提示:使用 % 访问每个数字和 / 减少数字,这样您就可以计算所有数字。 */
import java.util.Scanner;
public class Do_While_Swigart
{
public static void main(String [] args)
{
int number = 0;
int var = 0;
int var2, var3,var4,var5,var6 = 0;
int count = 0;
Scanner scan = new Scanner (System.in);
System.out.println("Hello! Please input a positive or negative whole number. Ex: 450");
number = scan.nextInt();
do
{
var = number % 10;
count = (var/var);
var2 = number % 100;
count += (var2/var2);
var3 = number %100;
count += (var3/var3);
var4 = number%1000;
count += (var4/var4);
var5 = number%10000;
} while ( var5 == 0);
System.out.println("Your number has "+count+" digits.");
}
}
【问题讨论】:
-
这可能是最容易做到的 (number+"").length
-
附加调试器并逐步执行代码。密切注意分配的 var、var2、var3 和 var4 以及 (var/var) 评估的内容(提示 x/x=1 当 x != 0)
-
另外,计算数字长度的数学方法是
1 + floor(log(n)),其中log与数字在同一个基数中。如果n可以为负数,只需添加1 + floor(log(abs(n))) -
你的方法行不通。以输入 1000 为例。 1000%10 = 0。哦哦哦。除以 0 错误。
-
/10 删除一个数字
标签: java do-while counting digits