有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java dowhile循环用于计算输入数字中的数字。故障排除代码

我好像搞不懂。它总是显示数字有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.");
  }

}

共 (3) 个答案

  1. # 1 楼答案

    此代码将解决您的问题。此外,不需要使用%运算符,因为不需要提取每个数字。你只需要计算数字的个数,通过使用/operator,你就可以迭代你的循环,当数字减为零时,循环就会退出

    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 计数:1 数值:450/10=45

    计数:2 数值:45/10=4

    计数:3 数量:4/10=0

    而条件为num>;0 . 现在循环将退出

    希望这对你有帮助

  2. # 2 楼答案

    该代码考虑了问题的所有要求。尽管这可能很奇怪

    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");
        }
    }
    
  3. # 3 楼答案

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

    整数。toString(数字)。长度()

    但是,如果你真的需要用do while loop来做,这可能对你有用:

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