Как изменить порядок int, не превращая его в строку - PullRequest
1 голос
/ 20 марта 2020

Мне было поручено создать метод, который будет принимать 3 di git int, введенный пользователем, и выводить его реверс (123 - 321). Мне не разрешено преобразовывать int в строку, иначе я потеряю очки, мне также запрещено печатать где-либо, кроме main.

public class Lab01
{
  public int sumTheDigits(int num)
   {
      int sum = 0;
      while(num > 0)
      {
         sum = sum + num % 10;
         num = num/10;
      }
      return sum;
   }

   public int reverseTheOrder(int reverse)
   {
      return reverse;
   }

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

      Lab01 lab = new Lab01();
      System.out.println("Enter a three digit number: ");
      int theNum = input.nextInt();
      int theSum = lab.sumTheDigits(theNum);
      int theReverse = lab.reverseTheOrder(theSum);

      System.out.println("The sum of the digits of " + theNum + " is " + theSum);
  }

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Вам необходимо использовать следующее.

  • % оператор остатка
  • / оператор деления
  • * умножение.
  • + сложение
Say you have a number 987
n = 987
r = n % 10 = 7   remainder when dividing by 10
n = n/10 = 98    integer division
Now repeat with n until n = 0, keeping track of r.

Как только вы поймете это, вы можете поэкспериментировать (возможно, сначала на бумаге), чтобы увидеть, как вернуть их в обратном порядке (используя два последних оператора) , Но помните, что числа, заканчивающиеся на 0, такие как 980, станут 89, так как ведущие нули отброшены.

0 голосов
/ 20 марта 2020

Вы можете использовать метод ниже для вычисления обратного числа.

public int reverseTheOrder(int reverse){
        int result = 0;
        while(reverse != 0){
            int rem = reverse%10;
            result = (result *10) + rem;
            reverse /= 10;
        }
      return result;
   }
...