在Java中无循环地反转整数

时间:2018-11-18 04:52:12

标签: java reverse

这是一个作业问题

有没有一种方法可以在Java中不使用任何循环来反转数字?我能想到的唯一解决方案是使用String反转它,然后将其转换回整数。

6 个答案:

答案 0 :(得分:1)

即使要通过将数字转换为String来反转数字,如果希望程序在具有不同大小的int时也能运行,则仍然需要循环。如果我要制作一种方法来反转数字,但无法使用循环来实现,那么我可能会使用递归(仍然间接使用循环)来实现。该代码将如下所示:

class Main {
  public static void main(String[] args) {
    String input = "1234"; // or scanner to take in input can be implemented
    System.out.println(Integer.parseInt(reverseInt(input)));
  }
  public static String reverseInt(String x) {
    if (x.length() == 1) {
      return x;
    } else {
      return x.substring(x.length() - 1) + reverseInt(x.substring(0, x.length() - 1));
    }
   }


}

希望这会有所帮助!

答案 1 :(得分:1)

  

如果要使用任何循环来倒数,可以使用递归方法调用。以下程序也一样

public static void reverseMethod(int number) {
    if (number < 10) {
        System.out.println(number);
        return;
    } else {
        System.out.print(number % 10);
        reverseMethod(number / 10);
    }
}

public static void main(String args[]) {
    int num = 4567;
    reverseMethod(num);
}

答案 2 :(得分:0)

使用reverse()中的StringBuilder

int number = 1234;
String str = String.valueOf(number);
StringBuilder builder = new StringBuilder(str);
builder.reverse();
number = Integer.parseInt(builder.toString());
System.out.println(number);

将打印:

4321

答案 3 :(得分:0)

如果您想要没有循环和递归的反向方法,请使用此代码

 int a=12345;
    int b,c,d,e,f;
    b=a%10;
    c=a%100/10;
    d=a%1000/100;
    e=a%10000/1000;
    f=a%100000/10000;
    System.out.println(b+","+c+","+d+","+e+","+f);

答案 4 :(得分:0)

你可以这样:

public int reverse(int x) {    
    
    String o = "";
    
    if (x < 0) {
        x *= -1;
                String s = Integer.toString(x);

        o += "-";
        o += new StringBuilder(s).reverse().toString();
    }
    else {
                String s = Integer.toString(x);

        o += new StringBuilder(s).reverse().toString();
    }
    try {
        int out = Integer.parseInt(o);
    
    //System.out.println(s);
    
        return out;        }
    catch (NumberFormatException e) {
        return 0;
    }
    
    
}

答案 5 :(得分:0)

这是使用递归方法调用的解决方案

公共类测试员{

import argparse

main_parser = argparse.ArgumentParser()

subparsers = main_parser.add_subparsers(title='ACTIONs',
                                        help='actions you can take')

a_parser = subparsers.add_parser('a',
                                    help='Do action a')

b_parser = subparsers.add_parser('b',
                                     help='Do action b')

}