Почему мое решение неверно для обращения целого числа? - PullRequest
0 голосов
/ 05 сентября 2018

Мне нужно перевернуть целое число, в этом случае 123 должно выйти на 321. Я преобразовываю int в строку, обращаю строку, преобразовываю ее обратно в int, а затем возвращаю, но кое-как получаю error.

Какой хороший способ решить эту проблему?

Вот мой код:

public static int solution(int x) {
    String s = Integer.toString(x);
    String result = " ";
    int ans = 0;

    for(int i = s.length() - 1; i >= 0; i--) {
        result += s.charAt(i);
    }

    ans = Integer.parseInt(result);

    return ans;
}


public static void main(String args[]) {
    int x = 123;

    System.out.print(solution(x)) 
}

Вот мой error:

Exception in thread "main" java.lang.NumberFormatException: For input string: " 321"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:638)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at Node.solution(Node.java:28)
at Node.main(Node.java:47)

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Нет необходимости в избыточных преобразованиях в строку и наоборот.
Код Python (примечание, ведущее нулевое исключение):

def rev(x):
    res = 0
    while (x > 0):
        res = res * 10 + x % 10
        x  = x // 10
    return res

print(rev(9801), rev(120))
>>> 1089 21
0 голосов
/ 05 сентября 2018

Не добавляйте пробел в начале:

String result = " ";

Использовать пустую строку

String result = "";

И, не относясь к вопросу, вы также можете достичь этого следующим образом:

int x = 123;
StringBuilder stringBuilder = new StringBuilder(x);
int y = Integer.parseInt(stringBuilder.reverse().toString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...