这是我在下面的代码;
int reverse = 0;
while( num != 0 )
{
reverse = reverse * 10;
reverse = reverse + num%10;
num = num/10;
}
System.out.println(reverse);
如果我输入:1234它将显示4321
但如果我输入0044
它将输出44
我想输出4400
我应该输入什么?
答案 0 :(得分:3)
由于leadig零在int中没有意义,你必须将你的输入读作String并反转该String以保持前导零(并将它们变成尾随零)。
答案 1 :(得分:1)
问题是你的循环大小,而不是你的逻辑。 假设你的所有数字都是4位数,那么
int reverse = 0;
int i;
for( i = 0; i < 4 ; i++ )
{
reverse = reverse * 10;
reverse = reverse + num%10;
num = num/10;
}
System.out.println(reverse);
将起作用
答案 2 :(得分:0)
您可能必须尝试使用字符串来实现此目的。 试试下面的代码
import java.util.Scanner;
public class Reverse
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("Enter a number: ");
StringBuilder number=new StringBuilder(in.next());
System.out.println(number.reverse());
}
}
希望这会有所帮助:)
现在,如果你想找到反转数字和输入数字之间的差异
import java.util.Scanner;
public class Reverse {
public static void main(String[] args) {
int a;
Scanner in = new Scanner(System.in);
System.out.print("Enter a number: ");
String number=in.next();
StringBuilder numbertoRev=new StringBuilder(number);
try{
int a=Integer.valueOf(number);
}catch(NumberFormatException e)
{
System.out.println("not a number :)");
return;
}
int b=Integer.valueOf(numbertoRev.reverse().toString());
System.out.println(b-a);
}
这是我从你的问题中理解的。请原谅我,如果这不是你想要的:)
答案 3 :(得分:0)
你几乎就在那里,你只需要完全循环4次。您还应该防止错误数据,并且您应该将数字打印为4位数字:
if (num < 0 || num > 9999)
throw new IllegalArgumentException("Not a 4-digit number: " + num);
int reverse = 0;
for (int i = 0; i < 4; i++, num /= 10)
reverse = reverse * 10 + num % 10;
System.out.printf("%04d%n", reverse);
当然,您也可以使用字符串操作来实现:
if (num < 0 || num > 9999)
throw new IllegalArgumentException("Not a 4-digit number: " + num);
String reverse = new StringBuilder(String.format("%04d", num)).reverse().toString();
System.out.printf(reverse);
如果需要,可以增强这两种方法以支持5位以上。
<强>跟进强>
第九尾回答:
如果我想要4321(反向号码) - 1234(输入号码)我该怎么办?
上面的第一个版本是最好的,因为你已经有了数字,只需稍加改动就可以保留原始输入:
if (input < 0 || input > 9999)
throw new IllegalArgumentException("Not a 4-digit number: " + input);
int reverse = 0;
for (int i = 0, num = input; i < 4; i++, num /= 10)
reverse = reverse * 10 + num % 10;
System.out.printf("Reverse: %04d%n", reverse);
System.out.printf("Difference: %04d%n", reverse - input);
答案 4 :(得分:0)
如果要包含“0044”和类似情况,则应将输入视为字符串。只要您需要该号码,就可以将其转换为整数。试试这个:
public class ReverseNumber {
static int reverse = 0;
public static void main(String[] args) {
String num = "0044";
String temp = new StringBuilder(num).reverse().toString();
reverse = Integer.valueOf(temp);
System.out.println(reverse);
}
}
我希望它有所帮助。