我似乎无法弄清楚这一点。它始终显示该数字有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.");
}
}
此代码将解决您的问题。而且,不需要使用%运算符,因为不需要提取每个数字。所有你只需要计算位数,并使用/运算符可以迭代你的循环,当数字减少到零时,循环将退出。
import java.util.Scanner;
public class NumberLength{
public static void main(String ar[]){
Scanner scan = new Scanner (System.in);
System.out.println("Hello! Please input a positive or negative whole number. Ex: 450");
int number = scan.nextInt();
int countDig = calNumOfDigit(number);
System.out.println(countDig);
}
public static int calNumOfDigit(int n){
int count = 0;
int num = Math.abs(n);
do{
count++;
num = num/10;
}while(num>0);
return count;
}
}
用例子说明: -
假设输入的数字是:450 count:1 num:450/10 = 45
COUNT:2 NUM:45/10 = 4
数:3是否:4/10 = 0
而条件是num> 0。所以现在循环将退出。
希望这对你有所帮助!!!
此代码考虑了问题的所有要求。尽管很奇怪。
public class MyClass {
public static void main(String args[]) {
int n=-420; // input
int digits=0;
do {
if (n != 0) // quit if input should be 0
digits++;
} while ((n%Math.pow(10,digits)) != n); // a=b%c --> if c > b then a = b
System.out.println(n + " has " + digits + " digits");
}
}
正如乔纳森所说,最好使用以下内容:
Integer.toString(数字)。长度();
但如果你真的需要使用do while循环这可能对你有用:
Scanner scan = new Scanner(System.in);
System.out.println("Hello! Please input a positive or negative whole number. Ex: 450");
int number = scan.nextInt();
do {
int digitos = (int) (Math.log10(number) + 1);
number = number / 10;
System.out.println("Your number has " + digitos + " digits.");
} while (number < 0);