Удалить ведущие нули в массиве int - PullRequest
0 голосов
/ 09 октября 2018

Попытка объединения чисел путем удаления начальных нулей в массиве 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]);
}

Желаемый вывод:

405

Ответы [ 7 ]

0 голосов
/ 09 октября 2018
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]);
        }
    }
}

Я сдвинул элементы, как вы просили удалить ведущие нули

0 голосов
/ 09 октября 2018

Преобразуйте ваш массив в число, затем напечатайте его:

    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);

Тогда вы даже сможете использовать результат для дальнейших вычислений.

0 голосов
/ 09 октября 2018
    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]);
    }
0 голосов
/ 09 октября 2018

Поскольку массив имеет фиксированный размер, вы не можете удалить какой-либо элемент из массива.Таким образом, я предполагаю, что вы хотите иметь новый массив без начальных нулей.

С Java 9+ (dropWhile отсутствует в 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:

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
0 голосов
/ 09 октября 2018

Вы можете использовать этот код:

boolean foundNonZero = false;
for (int i = 0; i < arr.length; i++) {
    foundNonZero |= (arr[i] != 0);
    if(foundNonZero) {
       System.out.print(array[i]);
    }
}
0 голосов
/ 09 октября 2018

Вы можете сделать это, вставив логическое значение.

  boolean leadingZeroFinished=false;
  for (int i = 0; i < arr.length; i++) {
       if(array[i]!=0) {
           leadingZeroFinished=true;
       }
       if(leadingZeroFinished) {
          System.out.println(array[i])
       }
  }

Если вы также хотите удалить элемент, лучше использовать Список

0 голосов
/ 09 октября 2018

попробуйте, если вы хотите напечатать:

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;
    }
}

вывод

405
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...