В примерах кода в своей книге ("Структуры данных и алгоритмы") Лафоре не пользуется методом length. А отдельно объявляет дину массива, например как приведено ниже. 1. Почему не использовать метод length? 2. Или бывают случаи, когда длина массива нужна в отдельной переменной? Какие? 3. Не понятен второй коммент, ведь nElems равен a.length
public void noDups() { //Avoid duplicates.
int i, j;
int nElems = 6;
int[a] = {11,20,6,6,6,8};
for(i=0; i < nElems, i++) {
j=i+1;
while(j < nElems) {
if(a[i] == a[j]) {
for(int k = j; k < nElems; k++)
if (k == nElems - 1) a[k] = 0;
//avoids looking for a[k+1] when nElems == a.length
else a[k] = a[k + 1]; //Change to next neighbour
nElems--;
} else j++;
Отвечая на п.1 и п.2 Во-первых если дело касается массивов, то размер определяется не методом length() (как, например, в строках), а хранится в его переменной экземпляра length. Просто названия похожи и вызывают путаницу, длину строки мы получаем через метод stroka.length(), а размер массива через его свойство (поле) massiv.length. Во-вторых получить длину массива можно если он уже создан, но в реальных приложениях массивы не всегда создаются сразу, иногда переменная массива инициируется, а определение его размера и заполнение элементами происходит позже. Возможно автор книги подразумевал такой вариант, но для упрощения в примере инициировал массив и заполнял его элементами сразу. Например, наша задача получить от пользователя желаемый размер массива, заполнить его натуральными числами и вывести их в консоли. Т.е. предварительно мы не знаем какой у нас будет массив:
import java.util.Scanner;
public class Primer{
public static void main(String[] args){
//переменная для будущего размера массива
int nElems = 0;
int[] myArray;
Scanner scan = new Scanner(System.in);
System.out.println("Введите размер массива (целое число):");
// принимаем от пользователя необходимый размер массива
while(scan.hasNext()){
if(scan.hasNextInt()){
nElems = scan.nextInt();
break;
}
else{
String s = scan.next();
System.out.println("Неправильный формат данных.\n" +
"Для размера массива необходимо ввести целое число!");
return;
}
}
// создаем массив, размер которого задан пользователем
// и заполняем его целыми числами (для примера)
myArray = new int[nElems];
for(int i=0; i < nElems; i++){
myArray[i] = i + 1;
}
// выводим данные массива
for(int n: myArray){
System.out.print(n + " ");
}
System.out.println();
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
myRad имеет тип floatКто-нибудь знает, что нужно исправить? У меня есть другие переменные float, но они не подчёркнуты
У меня есть относительно чистый код интерпретатора brainFuck на java, могли бы вы дать несколько советов по его улучшению в плане чистоты кода, и, если...
Работаю с готовой БДПри запуске приложения копирую из Assets в каталог БД приложения по пути: