Java 如何编写一个程序来反转用户输入的数字

Java 如何编写一个程序来反转用户输入的数字,java,math,Java,Math,作业问题是用户输入一个数字。然后你必须写一个程序来颠倒顺序。因此,如果用户输入7364,您必须编写一个程序,在下一行显示4637。我想我已经想出了解决办法,但我不知道怎么写 因为最后一个数字是倒序的第一个数字,这意味着如果有人输入7364,这意味着我想得到4637。我必须编写一个程序,将4乘以1000,6乘以100,3乘以10,7乘以1,然后将它们相加得到4637。我不是100%确定怎么做。让我困惑的是如何将一个数字乘以1000,下一个乘以100,下一个乘以10,下一个乘以1,然后将它们相加 i

作业问题是用户输入一个数字。然后你必须写一个程序来颠倒顺序。因此,如果用户输入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); 

   }

  }
导入acm.program.*;
公共类ReverseEnumber扩展控制台程序{
公开募捐{
int n=readInt(“请输入任何正数:”);
int-total=0;
而(n>0){

total=total+n%10;是否必须用int表示它?字符串似乎更自然一些


如果您坚持使用int,您需要跟踪要乘以的因子:这意味着每次迭代都要乘以10的另一个变量。

是否必须用int表示它?字符串似乎更自然

如果您坚持使用int,则需要跟踪要与之相乘的因子:这意味着每次迭代都要将另一个变量乘以10。

这应该可以:

    total = 0;
    while (n > 0) {
        total = total * 10 + n % 10;
        n = n / 10;
    }
    println("the reverse order is " + total); 
您不必知道原始数字中有多少位数字,反正您正在遍历所有数字。下面是发生的情况:

  • 当您得到一个新的数字(
    n%10
    )时,将结果乘以10并将其相加。这样,您就抵消了结果中的数字
  • 然后,通过执行
    n/10
    ,从原始数字中删除最后一个数字(在前一步中添加的数字)
这应该可以:

    total = 0;
    while (n > 0) {
        total = total * 10 + n % 10;
        n = n / 10;
    }
    println("the reverse order is " + total); 
您不必知道原始数字中有多少位数字,反正您正在遍历所有数字。下面是发生的情况:

  • 当您得到一个新的数字(
    n%10
    )时,将结果乘以10并将其相加。这样,您就抵消了结果中的数字
  • 然后,通过执行
    n/10
    ,从原始数字中删除最后一个数字(在前一步中添加的数字)
试试这个:

while( n != 0 )
{
    reverse = reverse * 10;
    reverse = reverse + n%10;
    n = n/10;
}
逻辑是从单元位置开始,在每次迭代中获得一个数字,直到遇到所有数字

n
是输入编号。
reverse
是在
while
完成后存储
n
的reverse的变量

%
运算符与10一起使用时,会给出单位位置的数字。
/
操作员当与10一起使用时,除装置位置的数字外,所有数字均由您控制

n=7364
reverse=0

在第一次迭代中,循环将如下所示:

while(7364 != 0) // true
{
    reverse = 0 * 10; // reverse = 0
    reverse = 0 + 7364%10 // reverse = 4
    n = 7364/10 // n = 736
}
在第二次迭代中:

while(736 != 0) // true
{
    reverse = 4 * 10; // reverse = 40
    reverse = 40 + 736%10 // reverse = 46
    n = 736/10 // n = 73
}
while(73 != 0) // true
{
    reverse = 46 * 10; // reverse = 460
    reverse = 460 + 73%10 // reverse = 463
    n = 73/10 // n = 7
}
while(7 != 0) // true
{
    reverse = 463 * 10; // reverse = 4630
    reverse = 4630 + 7%10 // reverse = 4637
    n = 7/10 // n = 0
}
while(0 != 0) // false and loop ends
{
    ...
}
在第3次迭代中:

while(736 != 0) // true
{
    reverse = 4 * 10; // reverse = 40
    reverse = 40 + 736%10 // reverse = 46
    n = 736/10 // n = 73
}
while(73 != 0) // true
{
    reverse = 46 * 10; // reverse = 460
    reverse = 460 + 73%10 // reverse = 463
    n = 73/10 // n = 7
}
while(7 != 0) // true
{
    reverse = 463 * 10; // reverse = 4630
    reverse = 4630 + 7%10 // reverse = 4637
    n = 7/10 // n = 0
}
while(0 != 0) // false and loop ends
{
    ...
}
在第4次迭代中:

while(736 != 0) // true
{
    reverse = 4 * 10; // reverse = 40
    reverse = 40 + 736%10 // reverse = 46
    n = 736/10 // n = 73
}
while(73 != 0) // true
{
    reverse = 46 * 10; // reverse = 460
    reverse = 460 + 73%10 // reverse = 463
    n = 73/10 // n = 7
}
while(7 != 0) // true
{
    reverse = 463 * 10; // reverse = 4630
    reverse = 4630 + 7%10 // reverse = 4637
    n = 7/10 // n = 0
}
while(0 != 0) // false and loop ends
{
    ...
}
在第5次迭代中:

while(736 != 0) // true
{
    reverse = 4 * 10; // reverse = 40
    reverse = 40 + 736%10 // reverse = 46
    n = 736/10 // n = 73
}
while(73 != 0) // true
{
    reverse = 46 * 10; // reverse = 460
    reverse = 460 + 73%10 // reverse = 463
    n = 73/10 // n = 7
}
while(7 != 0) // true
{
    reverse = 463 * 10; // reverse = 4630
    reverse = 4630 + 7%10 // reverse = 4637
    n = 7/10 // n = 0
}
while(0 != 0) // false and loop ends
{
    ...
}
我们有
reverse=4637

试试这个:

while( n != 0 )
{
    reverse = reverse * 10;
    reverse = reverse + n%10;
    n = n/10;
}
逻辑是从单元位置开始,在每次迭代中获得一个数字,直到遇到所有数字

n
是输入编号。
reverse
是在
while
完成后存储
n
的reverse的变量

%
运算符与10一起使用时,会给出单位位置的数字。
/
操作员当与10一起使用时,除装置位置的数字外,所有数字均由您控制

n=7364
reverse=0

在第一次迭代中,循环将如下所示:

while(7364 != 0) // true
{
    reverse = 0 * 10; // reverse = 0
    reverse = 0 + 7364%10 // reverse = 4
    n = 7364/10 // n = 736
}
在第二次迭代中:

while(736 != 0) // true
{
    reverse = 4 * 10; // reverse = 40
    reverse = 40 + 736%10 // reverse = 46
    n = 736/10 // n = 73
}
while(73 != 0) // true
{
    reverse = 46 * 10; // reverse = 460
    reverse = 460 + 73%10 // reverse = 463
    n = 73/10 // n = 7
}
while(7 != 0) // true
{
    reverse = 463 * 10; // reverse = 4630
    reverse = 4630 + 7%10 // reverse = 4637
    n = 7/10 // n = 0
}
while(0 != 0) // false and loop ends
{
    ...
}
在第3次迭代中:

while(736 != 0) // true
{
    reverse = 4 * 10; // reverse = 40
    reverse = 40 + 736%10 // reverse = 46
    n = 736/10 // n = 73
}
while(73 != 0) // true
{
    reverse = 46 * 10; // reverse = 460
    reverse = 460 + 73%10 // reverse = 463
    n = 73/10 // n = 7
}
while(7 != 0) // true
{
    reverse = 463 * 10; // reverse = 4630
    reverse = 4630 + 7%10 // reverse = 4637
    n = 7/10 // n = 0
}
while(0 != 0) // false and loop ends
{
    ...
}
在第4次迭代中:

while(736 != 0) // true
{
    reverse = 4 * 10; // reverse = 40
    reverse = 40 + 736%10 // reverse = 46
    n = 736/10 // n = 73
}
while(73 != 0) // true
{
    reverse = 46 * 10; // reverse = 460
    reverse = 460 + 73%10 // reverse = 463
    n = 73/10 // n = 7
}
while(7 != 0) // true
{
    reverse = 463 * 10; // reverse = 4630
    reverse = 4630 + 7%10 // reverse = 4637
    n = 7/10 // n = 0
}
while(0 != 0) // false and loop ends
{
    ...
}
在第5次迭代中:

while(736 != 0) // true
{
    reverse = 4 * 10; // reverse = 40
    reverse = 40 + 736%10 // reverse = 46
    n = 736/10 // n = 73
}
while(73 != 0) // true
{
    reverse = 46 * 10; // reverse = 460
    reverse = 460 + 73%10 // reverse = 463
    n = 73/10 // n = 7
}
while(7 != 0) // true
{
    reverse = 463 * 10; // reverse = 4630
    reverse = 4630 + 7%10 // reverse = 4637
    n = 7/10 // n = 0
}
while(0 != 0) // false and loop ends
{
    ...
}

我们有
reverse=4637

Int
转换为
String
,然后将其放入
StringBuffer
然后使用
.reverse()

我不想添加代码,因为这有很多示例。 像这样


之后,您可以再次将其转换为
String
Int
转换为
String
,然后将其放入
StringBuffer
然后使用
.reverse()

我不想添加代码,因为这有很多示例。 像这样


在那之后,你可以再次将它转换成字符串。好吧,要反转数字,最简单的解决方法是将它转换成字符串。在这种情况下,获取第一个字母并在末尾附加它,直到到达最后一个字母或数字。同样,你也可以对乘法部分进行类似的操作。逐个获取数字1作为字符串,将其转换回int,然后进行乘法和加法

编辑:如果你不能使用字符串,这里有一个数学的解决方案

int num = 123456; // any number than you want to reverse
string revnum = ''; // the reversed number
int temp = 0;
do {
 temp= (temp*10)+(num%10);
 num = (int)(num/10);
}while(num>0){
 revnum = revnum + temp;
}

嗯,要反转数字,最简单的解决方案是将其转换为字符串。在本例中,获取第一个字母并将其追加到末尾,直到到达最后一个字母或数字。此外,乘法部分也可以执行类似的操作。将数字一个接一个地转换为字符串,将其转换回int,然后进行乘法和加法

编辑:如果你不能使用字符串,这里有一个数学的解决方案

int num = 123456; // any number than you want to reverse
string revnum = ''; // the reversed number
int temp = 0;
do {
 temp= (temp*10)+(num%10);
 num = (int)(num/10);
}while(num>0){
 revnum = revnum + temp;
}

最简单的方法是使用库

System.out.println(new StringBuilder(String.valueOf(i)).reverse());

最简单的方法是使用库

System.out.println(new StringBuilder(String.valueOf(i)).reverse());

至少作者自己尝试过解决这个问题,发布了代码和一个相关的问题……解决这个问题的方法实际上比编写一个将整数转换为字符串的程序简单一步。难道你不能将用户输入作为字符串并将其颠倒过来吗?@shah。你还记得这句话吗,并对每个问题发表评论?你应该试着区分公平和不公平的问题。@11684我想我的老师想做一个计算。所以我必须做乘法和除法。至少作者自己也试过解决它