删除int数组中的前导零

kh1*_*h14 -1 java arrays int

尝试通过删除Int数组中的前导零来合并数字.

int[] array = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 5 };
for (int i = 0; i < arr.length; i++) {
    String.format("%09d", array[i]);
}

for (int i = 0; i < arr.length; i++) {
    System.out.print(array[i]);
}
Run Code Online (Sandbox Code Playgroud)

期望的输出:

405
Run Code Online (Sandbox Code Playgroud)

LuC*_*Cio 6

由于数组具有固定大小,因此无法从数组中删除任何元素.因此,我假设你想要一个没有前导零的新数组.

使用Java 9+(dropWhileJava 8中不存在),您可以这样做:

int[] array = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 5 };
int[] withoutLeadingZeros = Arrays.stream(array).dropWhile(i -> i == 0).toArray();
System.out.println(Arrays.toString(withoutLeadingZeros)); // [4, 0, 5]
Run Code Online (Sandbox Code Playgroud)

编辑
如果结果是String:

String withoutLeadingZeros = Arrays.stream(array).dropWhile(i -> i == 0).collect(StringBuilder::new, StringBuilder::append, (l, r) -> l.append(r)).toString();
System.out.println(withoutLeadingZeros); // 405
Run Code Online (Sandbox Code Playgroud)

编辑
如果结果是int:

int number = Arrays.stream(array).reduce((l, r) -> l * 10 + r).getAsInt();
System.out.println(number); // 405
Run Code Online (Sandbox Code Playgroud)