Следующее переписывание должно быть поучительным:
public class Delete {
static int search(int key, int[] arr) {
for (int i = 0; i < arr.length; i++)
if (arr[i] == key) {
return i;
}
return -1;
}
static void print(int[] arr, final int L) {
for (int i = 0; i < L; i++) {
System.out.println(arr[i]);
// try this also:
// System.out.format("%02d ", arr[i]);
}
}
public static void main(String[] args) {
int nums[] = { 77, 99, 44, 11, 00, 55, 66, 33, 10 };
final int N = nums.length;
int searchKey = 55;
int pos = search(searchKey, nums);
for (int t = pos; t < N-1; t++) {
nums[t] = nums[t + 1];
}
print(nums, N-1);
// prints 77, 99, 44, 11, 0, 66, 33, 10
System.out.println(010 == 8); // prints "true"
System.out.println(00000); // prints "0
}
}
Вот некоторые ключевые наблюдения:
- Разбейте логику на вспомогательные методы.Это облегчает тестирование и повторное использование логических компонентов, а также упрощает понимание общей логики.
- Это облегчает понимание кода, если вы используете
final
локальные переменные, такие как N
, для обозначения начального размераint[] nums
и определите остальную логику в терминах N
, N-1
и т. Д. - Чем больше не-
final
переменных, тем труднее понять, что происходиттак как их значения меняются со временем
- Следуйте правилам кодирования .В частности, имена классов начинаются с прописных букв.
- Будьте осторожны с
00
в массиве.Префикс 0
предназначен для восьмеричных литералов.То есть 010 == 8
. - Обратите внимание, что
00
печатается как простой 0
.Численно 00 = 000 = 0000 = 0
.Если вам нужно заполнить нулями, то это проблема форматирования.
См. Также
О восьмеричных литералах
При заполнении нулями