家庭作业问题是用户输入一个号码。然后你必须编写一个反转该顺序的程序。因此,如果用户输入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);
}
}
答案 0 :(得分:3)
使用库进行此操作的最简单方法。
System.out.println(new StringBuilder(String.valueOf(i)).reverse());
答案 1 :(得分:2)
试试这个:
while( n != 0 )
{
reverse = reverse * 10;
reverse = reverse + n%10;
n = n/10;
}
逻辑是从单位开始在每次迭代中获得一个数字,直到遇到所有数字。
n
是输入号。
reverse
是在n
完成后存储while
的反转的变量。
%
运算符与10一起使用时,会为您提供单位处的数字。
{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
}
在第5次迭代中:
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
{
...
}
。
答案 2 :(得分:2)
好吧,要扭转这个数字,最简单的解决方案是将它转换为字符串,然后将第一个字母添加到最后一个字母,直到你到达最后一个字母或数字为止。此外,您可以使用乘法部分执行相同的操作。逐个获取数字作为字符串将其转换回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;
}
答案 3 :(得分:1)
这应该有效:
total = 0;
while (n > 0) {
total = total * 10 + n % 10;
n = n / 10;
}
println("the reverse order is " + total);
您不必知道原始数字中有多少位数,无论如何都要遍历所有数字。这是发生的事情:
n % 10
)后,将结果乘以10并将其添加到数字中。这样,您可以偏移结果中的数字。 n / 10
从原始号码中删除最后一位数字(您之前在步骤中添加的数字)。答案 4 :(得分:0)
你必须用int表示吗?字符串似乎更自然?
如果坚持使用int,则需要跟踪要乘以的因子:这意味着每次迭代乘以10的另一个变量。
答案 5 :(得分:0)
答案 6 :(得分:0)
public class value{
public static void main(String[] args){
int n=Integer.parseInt(args[0]);
int t=0;
do{
t=n%10;
System.out.print(t);
n=n/10;
}while(n>0);
}
}