do-while循环计数输入数字中的数字。故障排除代码

问题描述 投票:-1回答:3

我似乎无法弄清楚这一点。它始终显示该数字有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.");
  }

}
java do-while counting digits
3个回答
0
投票

此代码将解决您的问题。而且,不需要使用%运算符,因为不需要提取每个数字。所有你只需要计算位数,并使用/运算符可以迭代你的循环,当数字减少到零时,循环将退出。

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。所以现在循环将退出。

希望这对你有所帮助!!!


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

-1
投票

正如乔纳森所说,最好使用以下内容:

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);
© www.soinside.com 2019 - 2024. All rights reserved.