цикл do-while для подсчета цифр во введенном числе. код устранения неполадок - PullRequest
0 голосов
/ 29 марта 2019

Я не могу понять это. Всегда отображается, что номер состоит из 4 цифр. Я ограничил входной предел 4 цифрами, как я уверен, вы можете видеть.

Я пытался изменить операторы модуля и другие базовые решения.

// 28 марта 2019 г. / * Написать Java-программу с использованием цикла do while, который принимает положительные или отрицательные целочисленные входные данные от пользователя и сообщает, сколько цифр содержит это число. * Цикл должен завершиться, когда пользователь вводит 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 ]

0 голосов
/ 29 марта 2019

Как сказал Джонатан, лучше использовать что-то вроде:

Integer.toString (number) .length ();

, но если вам действительно нужно сделать это с циклом 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);
0 голосов
/ 29 марта 2019

Этот код учитывает все требования проблемы. Как ни странно.

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");
    }
}
0 голосов
/ 29 марта 2019

Этот код решит вашу проблему.Более того, нет необходимости использовать оператор%, поскольку нет необходимости извлекать каждую цифру.Все, что вам нужно - это просто посчитать количество цифр, и с помощью оператора / вы можете выполнить итерацию вашего цикла, и когда число будет уменьшено до нуля, цикл завершится.

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

, пока условие равно нулю> 0.Так что теперь цикл завершится.

Надеюсь, это поможет вам !!!

...