изменение числа с помощью do-while - PullRequest
0 голосов
/ 05 мая 2020

Создайте программу java, которая считывает целое число (ЧИСЛО) и определяет его обратное с помощью операторов деления и остатка / по модулю. Если последний di git равен нулю, замените его единицей (1) перед тем, как поменять местами номер. Выведите также сумму всех цифр.

import java.util.*;

public class Main {
    static int replace(int number){
        if (number == 0)
            return 0;
        int digit = number % 10;

        if (digit == 0)
            digit = 1;

        return (number/10) * 10 + digit;
    }

    static int Convert(int number){
        if (number == 0)
            return 0;
        else
        return replace(number);
    }

    public static void main(String[] args) {
        int number;
        Scanner kb = new Scanner(System.in);

        System.out.print("Enter the number : ");
        number = kb.nextInt();
        System.out.println("replace:"+replace(number));
        int a, m = 0, sum = 0;

        do{
            a = replace(number) % 10;
            m = m * 10 + a;
            sum = sum + a;
            number = replace(number) / 10;
        }
        while( replace(number) > 0);

        System.out.println("Reverse:"+m);
        System.out.println("Sum of digits:"+sum);
    }
}

В настоящее время проблема возникает при обращении числа, потому что он также заменяет последний di git числа, этого не должно происходить.

Ввод / вывод текущей программы

Введите число: 2300

замените: 2301

Реверс: 1132

Сумма цифры: 7

1 Ответ

1 голос
/ 05 мая 2020

сделайте это вместо

import java.util.*;

public class Main {
    static int replace(int number){
        if (number %10 == 0)
            return number += 1;
        return number;
    }

    static int Convert(int number){
        if (number == 0)
            return 0;
        else
            return replace(number);
    }

    public static void main(String[] args) {
        int number;
        Scanner kb = new Scanner(System.in);

        System.out.print("Enter the number : ");
        number = kb.nextInt();
        int a = 0, m = 0, sum = 0;

        number = replace(number);
        System.out.println("replace:" + number);

        do{
            a = number %  10;
            m = m * 10 + a;
            sum = sum + a;
            number /= 10;
        }
        while( number > 0);

        System.out.println("Reverse:"+m);
        System.out.println("Sum of digits:"+sum);
    }
}

Ваш код в корне неверен из-за способа, которым вы заменяете свои числа.

Внесены изменения:

  1. Изменена замена алгоритм (вы не можете изменить все значения 0 на 1, что является неправильным и почему вы получили неправильные значения)
  2. Замените число перед вводом l oop. (Вам не нужно заменять каждую итерацию l oop в 3 разных местах)

Ожидаемый результат:

output

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...