Java-如何将一个数字反转并拆分为一个数组?

Java-如何将一个数字反转并拆分为一个数组?,java,Java,我是在ruby背景下自学java的 我正在做一个问题,希望一个数字反转并按数字列在一个数组中 Ex 1234->[4,3,2,1] 在ruby中,我很容易做到这一点- def digitize(n) n.to_s.reverse.split("").map(&:to_i) end 在java中,我的代码不起作用,因为很明显,我做错了什么 public class Kata { public static int[] digitize(long n) { String s

我是在ruby背景下自学java的

我正在做一个问题,希望一个数字反转并按数字列在一个数组中

Ex 1234->[4,3,2,1]

在ruby中,我很容易做到这一点-

def digitize(n)
  n.to_s.reverse.split("").map(&:to_i)
end
在java中,我的代码不起作用,因为很明显,我做错了什么

public class Kata {
  public static int[] digitize(long n) {

  String s = String.valueOf(n);
  String r = reverse(s, s.length()-1);
  String[] array = r.split("");
  Float[] floats = Arrays.stream(array).map(Float::valueOf).toArray(Float[]::new);
  }

  return floats;
}

有没有一种更简单的方法可以使用ruby之类的内置方法来实现这一点?我试着分开做每件事。第一个变量s,我想将数字转换为字符串。第二个变量r,反转该字符串。第三个变量数组,将变量r拆分为数字浮点最后是将字符串数组转换为数字

您的方法返回
Float[]
而不是
int[]
。试试这个:

int[] ints = Arrays.stream(array).mapToInt(Integer::parseInt).toArray();
return ints;

您的方法返回的是
Float[]
,而不是
int[]
。试试这个:

int[] ints = Arrays.stream(array).mapToInt(Integer::parseInt).toArray();
return ints;
使用JDK:

int[] reversedDigits = Arrays.stream(new StringBuilder().append(n).reverse().toString().split("(?<=.)")).mapToInt(Integer::parseInt).toArray();
int[]reversedDigits=Arrays.stream(新的StringBuilder().append(n).reverse().toString().split((?使用JDK:

int[] reversedDigits = Arrays.stream(new StringBuilder().append(n).reverse().toString().split("(?<=.)")).mapToInt(Integer::parseInt).toArray();

int[]reversedDigits=Arrays.stream(new StringBuilder().append(n).reverse().toString().split((?您可以收集
列表
,然后使用
集合对其进行
反向
然后将其转换为
int[]
。类似于

public static int[] digitize(long n) {
    String s = String.valueOf(n);
    List<Integer> al = s.chars().map(ch -> Character.digit(ch, 10))
            .boxed().collect(Collectors.toList());
    Collections.reverse(al);
    return al.stream().mapToInt(Integer::intValue).toArray();
}
将其与
地图结合使用
甚至更短

public static int[] digitize(long n) {
    String s = String.valueOf(n);
    return IntStream.range(0, s.length()) //
            .map(i -> Character.digit(s.charAt(s.length() - i - 1), 10)).toArray();
}

您可以收集一个
列表
,然后用
集合对其进行
反转。反转(列表)
,然后将其转换为
int[]
。类似

public static int[] digitize(long n) {
    String s = String.valueOf(n);
    List<Integer> al = s.chars().map(ch -> Character.digit(ch, 10))
            .boxed().collect(Collectors.toList());
    Collections.reverse(al);
    return al.stream().mapToInt(Integer::intValue).toArray();
}
将其与
地图结合使用
甚至更短

public static int[] digitize(long n) {
    String s = String.valueOf(n);
    return IntStream.range(0, s.length()) //
            .map(i -> Character.digit(s.charAt(s.length() - i - 1), 10)).toArray();
}
这对我有用

import java.lang.StringBuffer;

public class Kata {
  public static float[] digitize(long n) {

  int[] ints= new StringBuffer(n.toString()).reverse().toString().split("(?!^)").mapToInt(Integer::parseInt).toArray();;

  return ints;
}
这对我有用

import java.lang.StringBuffer;

public class Kata {
  public static float[] digitize(long n) {

  int[] ints= new StringBuffer(n.toString()).reverse().toString().split("(?!^)").mapToInt(Integer::parseInt).toArray();;

  return ints;
}

定义“不工作”。我会使用StringBuilder.reverse,因为我懒惰。定义“不工作”。我会使用StringBuilder.reverse,因为我懒惰