试图反向 return 整数(没有递归)

trying to return integer in reverse (without recursion)

我正在尝试打印给定整数的反转。该函数必须接受一个整数和 return 一个整数(w/o 递归或将每个数字单独打印为字符串)。这是我得到的,但它不起作用:

class Solution {
public int reverse(int x) 
{
    String numStr = "";
    while (x > 0)
    {  
        numStr = numStr + Integer.toString(x % 10);
        x /= 10;
    }
    return Integer.parseInt(numStr);
}
}

我的 return 语句出现运行时错误。非常感谢任何帮助或建议!

class Solution {
    public static int reverse(int x)
    {
    String numStr = "";
    while (x > 0)
    {
        numStr = numStr + Integer.toString(x % 10);
        x /= 10;
    }
    return Integer.parseInt(numStr);
}

public static void main(String[] args) {
    int answer = reverse(12345);
    System.out.print(answer);
    }
}

我刚刚将你的方法设为静态,你的代码对我来说工作正常,输出如下:

54321 进程已完成,退出代码为 0

这里不需要String,只需累加每个数字并将当前值乘以10(右移)。此外,您的方法可以是 static。喜欢,

public static int reverse(int x) {
    int r = 0;
    while (x > 0) {
        r = (r * 10) + (x % 10);
        x /= 10;
    }
    return r;
}

您收到值 0 的错误。Java 无法将字符串“”解析为 int。将字符串值初始化为“0”。

另一方面,您可以简化方法:

class Solution {
        public int reverse(int x) 
        {
            String digitsChain = Integer.toString(x);           
            return Integer.valueOf(StringUtils.reverse(digitsChain));
        }
    }

你错过了 x 为 0 的情况。如果 x 为 0,则字符串将为空。当你调用 return Integer.parseInt(numStr) 时,其中 numStr 为空字符串,将导致错误。

所以,如果你添加一个 if 语句来检查边缘情况,应该没问题

    public static int reverse(int x) 
    {
        if(x == 0) return 0;
        String numStr = "";
        while (x > 0)
        {  
            numStr = numStr + Integer.toString(x % 10);
            x /= 10;
        }
        return Integer.parseInt(numStr);
    }