[英]how to reverse number in 4 digits(java)
这是我下面的代码;
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
我应该输入什么?
由于Leadig零在int中没有任何意义,因此您必须将输入读取为String并反转该String才能保留前导零(并将其转换为尾随零)。
问题是循环大小,而不是逻辑。 假设您所有的数字都是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);
将工作
您可能必须尝试使用字符串来实现此目的。 试试下面的代码
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);
}
这是我从您的问题中了解的。 如果这不是您要的内容,请原谅我:)
您快到了,只需要循环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);
当然,您也可以使用String操作来做到这一点:
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);
如果要包括“ 0044”和类似的情况,则应将输入视为字符串。 每当您需要该数字时,都可以将其转换为Integer。 尝试这个:
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);
}
}
希望对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.