У меня проблема со следующими строками, где car
является массивом String
, который не был инициализирован/не имеет элементов.
String car [];
System.out.println(car.length);
Какое возможное решение?
У меня проблема со следующими строками, где car
является массивом String
, который не был инициализирован/не имеет элементов.
String car [];
System.out.println(car.length);
Какое возможное решение?
Так как car
не был инициализирован, он не имеет длины, его значение равно null
. Однако компилятор даже не позволит вам скомпилировать этот код как есть, указав следующую ошибку: переменная машина, возможно, не была инициализирована.
Сначала вам нужно инициализировать его, а затем вы можете использовать .length
:
String car[] = new String[] { "BMW", "Bentley" };
System.out.println(car.length);
Если вам нужно инициализировать пустой массив, вы можете использовать следующее:
String car[] = new String[] { }; // or simply String car[] = { };
System.out.println(car.length);
Если вам нужно инициализировать его с определенным размером, чтобы заполнить определенные позиции, вы можете использовать следующее:
String car[] = new String[3]; // initialize a String[] with length 3
System.out.println(car.length); // 3
car[0] = "BMW";
System.out.println(car.length); // 3
Однако я бы рекомендовал вместо этого использовать List
, если вы намерены добавить к нему элементы:
List<String> cars = new ArrayList<String>();
System.out.println(cars.size()); // 0
cars.add("BMW");
System.out.println(cars.size()); // 1
Ну, в этом случае переменная car
будет null
, поэтому разыменование ее (как и при доступе к car.length
) выкинет NullPointerException
.
Фактически, вы не можете получить доступ к этой переменной вообще до тех пор, пока ей не будет присвоено определенное значение - иначе компилятор будет жаловаться, что "переменная машина может не быть инициализирована".
Что вы пытаетесь сделать здесь (мне не ясно, какое именно "решение" вы ищете)?
String car [];
- ссылка на массив строк. Вы не видите длину, потому что там нет массива!
Это не сработает. Сначала вам нужно инициализировать массив. До сих пор у вас есть только ссылка String [], указывающая на null
.
Когда вы пытаетесь прочитать член длины, то, что вы на самом деле делаете, это null.length
, что приводит к исключению NullPointerException.
Так как вы еще не инициализировали car
, тем не менее, он не существует в JVM (виртуальная машина Java), поэтому вы должны сначала инициализировать его.
Например:
car = new String{"Porsche","Lamborghini"};
Теперь ваш код будет работать нормально.
INPUT:
String car [];
car = new String{"Porsche","Lamborghini"};
System.out.println(car.length);
ВЫВОД:
2
Как и все вышеприведенные ответы, он предложит исключить NullPointerException.
Пожалуйста, инициализируйте его с некоторыми значениями, а затем вы можете правильно использовать свойство length. Например:
String[] str = { "plastic", "paper", "use", "throw" };
System.out.println("Length is:::" + str.length);
Теперь задан массив 'str', поэтому длина также имеет определенное значение.
Я думаю, вы ищете это
String[] car = new String[10];
int size = car.length;
В Java мы объявляем строку массивов (например, автомобиль) как
String []car;
String car[];
Мы создаем массив с использованием нового оператора и определяем его тип: -
String []car=new String[];
String car[]=new String[];
Это назначает ссылку на массив строк для автомобиля. Вы также можете создать массив, инициализируя его: -
String []car={"Sedan","SUV","Hatchback","Convertible"};
Поскольку вы не инициализировали массив и пытаетесь получить к нему доступ, генерируется исключение NullPointerException.