如何反转输入的数字

时间:2015-01-26 14:59:04

标签: java loops

我要反转输入的号码。我已经为它编写了代码。但我需要知道它是否可以以任何其他更快的方式完成。请随时修改我的代码。

public static void main()throws IOException
{
    BufferedReader in=new BufferedReader(new InputStreamReader(System.in));

    System.out.println("Enter a number");
    int num=Integer.parseInt(in.readLine());
    int no=num;
    int d;
    int rev_no=0;
    int digits=0;
    while(num>0)
    {
        num/=10;
        digits++;
    }
    while(no>0)
    {
        d=no%10;
        rev_no+=d*(Math.pow(10,(digits-1)));
        no/=10;
        digits--;
    }
    System.out.println(rev_no);
}

3 个答案:

答案 0 :(得分:1)

正如@Christian在评论中提到的那样,你可以这样做:

int originalInt = 123456789;
String str = new StringBuilder(Integer.toString(originalInt)).reverse().toString();
int reversedInt = Integer.parseInt(str);

或者作为一个单行:

Integer.parseInt(new StringBuilder(Integer.toString(new Integer(123456789))).reverse().toString());

修改

要回答@Luiggi Mendoza的担忧 - 支持数字太大而无法容纳整数可以使用BigInteger完成,如下所示:

BigInteger originalValue = BigInteger.valueOf(563463346233535772l);
String reversedString = new StringBuilder(originalValue.toString()).reverse().toString();

答案 1 :(得分:0)

String myNum=num.toString();
String reversed = new StringBuffer(myNum).reverse().toString();
num=Integer.parseInt(reversed);

答案 2 :(得分:0)

没有StringBuilder的示例。

private static long revert(long number){
    String numberAsString = String.valueOf(number);

    String[] splitted = numberAsString.split("");

    String returnString = "";

    for(int i = splitted.length-1; i >=0; i--){
        returnString += splitted[i];
    }

    return Integer.valueOf(returnString);
}