Попытайтесь объединить числа, удалив ведущие нули в массиве 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
Ваш первый цикл ничего не делает (полезно).
Вы имеете в виду удалить нули из массива или распечатать массив без начальных нулей? Очень разные вопросы с разными решениями!




попробуйте это, если хотите распечатать:
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
Вы можете сделать это, вставив логическое значение.
boolean leadingZeroFinished=false;
for (int i = 0; i < arr.length; i++) {
if (array[i]!=0) {
leadingZeroFinished=true;
}
if (leadingZeroFinished) {
System.out.println(array[i])
}
}
Если вы также хотите удалить элемент, вам лучше использовать список
Вы можете использовать этот код:
boolean foundNonZero = false;
for (int i = 0; i < arr.length; i++) {
foundNonZero |= (arr[i] != 0);
if (foundNonZero) {
System.out.print(array[i]);
}
}
Поскольку массив имеет фиксированный размер, вы не можете удалить какой-либо элемент из массива. Таким образом, я предполагаю, что вы хотите иметь новый массив без начальных нулей.
С 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]
EDIT
Если результатом должен быть 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
EDIT
Если результатом должен быть int:
int number = Arrays.stream(array).reduce((l, r) -> l * 10 + r).getAsInt();
System.out.println(number); // 405
Я обновил свой ответ, показывающий, как получить результат String или 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 };
int i = 0;
for (; i < array.length; i++) {
if (array[i] > 0)
break;
}
for (; i < array.length; i++) {
System.out.print(array[i]);
}
Это работает (компилируется)? Известен ли i во втором шлейфе? Я не запускал его, но похоже, что он просто распечатает массив как есть?
это не будет компилироваться, сначала проверьте это.
Да, это работает, не обязательно писать инициализацию внутри для блока, вы можете записать это следующим образом: i = 0; для (;;) {если (я <размер) перерыв; ... ... ... 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);
Затем вы даже можете использовать результат для дальнейших вычислений.
Ваш Выход желаемый или тот, который вы сейчас получаете и не хотите? Кстати, это не рабочий пример ...