作业问题是用户输入数字。然后,您必须编写一个颠倒该顺序的程序。因此,如果用户输入7364,则必须编写在下一行显示4637的程序。我想我已经找到了解决方案,但不确定如何编写。

由于最后一个数字是相反的第一个数字,这意味着如果有人输入7364,则意味着我要获得4637。我必须编写一个程序,将4乘以1000、6乘以100、3乘以10和7乘以1。将它们加起来得到4637。我不是100%不确定该怎么做。让我感到困惑的是如何将一个数字乘以1000,再乘以100,再乘以10,再乘以1,然后将这些数字相加。

import acm.program.*;
public class ReverseNumber extends ConsoleProgram{
    public void run(){

    int n = readInt("please enter any positive number: ");

    int total = 0;


    while ( n > 0){
    total = total + n % 10;    <----?
    n = n * 1000;         <----?
      }
    println("the reverse order is" + total);

   }

  }

最佳答案

这应该工作:

    total = 0;
    while (n > 0) {
        total = total * 10 + n % 10;
        n = n / 10;
    }
    println("the reverse order is " + total);


您不必知道原始数字中有多少个数字,无论如何都要遍历所有数字。这是发生了什么:


当您得到一个新的数字(n % 10)时,将结果乘以10并将其相加。这样,您可以偏移结果中的数字。
然后,通过执行n / 10从原始数字中消除最后一位数字(在上一步中添加的最后一位数字)。

08-06 20:56