Java 删除整数数组中的前导零

Java 删除整数数组中的前导零,java,arrays,int,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++) { S

尝试通过删除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]);
}

如果要打印,请尝试以下操作:

int[] arr = { 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 };
boolean isNotLeadingZero=false;
for (int i = 0; i < arr.length; i++) {
    if((arr[i] != 0)  || isNotLeadingZero){
        System.out.print(arr[i]);
        isNotLeadingZero= true;
    }
}

您可以通过插入布尔值来完成此操作

  boolean leadingZeroFinished=false;
  for (int i = 0; i < arr.length; i++) {
       if(array[i]!=0) {
           leadingZeroFinished=true;
       }
       if(leadingZeroFinished) {
          System.out.println(array[i])
       }
  }
布尔leadingZeroFinished=false;
对于(int i=0;i
如果还想删除元素,最好使用列表,您可以使用以下代码:

boolean foundNonZero = false;
for (int i = 0; i < arr.length; i++) {
    foundNonZero |= (arr[i] != 0);
    if(foundNonZero) {
       System.out.print(array[i]);
    }
}
boolean foundNonZero=false;
对于(int i=0;i
由于数组具有固定大小,因此无法从数组中删除任何元素。因此,我假设您想要一个没有前导零的新数组

使用Java 9+(Java 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]
编辑
如果结果是一个
字符串

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
编辑
如果结果是
int

int number = Arrays.stream(array).reduce((l, r) -> l * 10 + r).getAsInt();
System.out.println(number); // 405
int[]数组={0,0,0,0,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 i=0;
对于(;i0)
打破
}
对于(;i
导入java.util.*;
导入java.lang.*;
导入java.io.*;
表意文字
{
公共静态void main(字符串[]args)引发java.lang.Exception
{
int[]arr={0,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 i,j;
对于(i=0;i对于(;i将数组转换为数字,然后打印:

    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 exp = 1;
    long total =0;
    for (int i = array.length -1; i >=0; i-- ) {
        total += array[i]*exp;
        exp *=10;
    }


    System.out.println(total);

然后,您甚至可以使用结果进行进一步计算。

您的输出是所需的还是当前得到的且不需要的?顺便说一句,这不是一个工作示例…您的第一个循环没有任何作用(有用).你的意思是从数组中删除零,还是打印不带前导零的数组?不同的问题有不同的解决方案!这有效吗(编译)?第二个循环中是否知道
i
?我还没有运行它,但它看起来只是按原样打印数组?这不会编译,请先检查它。是的,它可以工作,不一定要在for块内部写入初始化,您可以按以下方式写入:i=0;for(;){if(我已经更新了我的答案,说明了如何获得
字符串
int
结果。
int number = Arrays.stream(array).reduce((l, r) -> l * 10 + r).getAsInt();
System.out.println(number); // 405
    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 i = 0;
    for (; i < array.length; i++) {
        if (array[i] > 0)
            break;
    }

    for (; i < array.length; i++) {
        System.out.print(array[i]);
    }
import java.util.*;
import java.lang.*;
import java.io.*;

class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        int[] arr = { 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 i,j;

        for (i = 0; i < arr.length; i++) {
            if(arr[i]!=0)
                break;
        }

        j=0;

        for(;i<arr.length;i++)
        {
            arr[j]=arr[i];
            j++;
        }



        for (i = 0; i < j; i++) {
            System.out.print(arr[i]);
        }
    }
}
    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 exp = 1;
    long total =0;
    for (int i = array.length -1; i >=0; i-- ) {
        total += array[i]*exp;
        exp *=10;
    }


    System.out.println(total);