#java
#java
Вопрос:
Я пытался усовершенствовать некоторые Java и пытаюсь обновить основы, поэтому я работал с 24-часовой книгой Sam по Java. Один из проектов для ознакомления с описанием объектов предоставляет код следующим образом:
package com.java24hours;
public class GremlinLab {
public static void main(String[] arguments) {
int numGremlins = Integer.parseInt(arguments[0]);
if (numGremlins > 0) {
Gremlin[] gremlins = new Gremlin[numGremlins];
for (int i = 0; i < numGremlins; i ) {
gremlins[i] = new Gremlin();
}
System.out.println("There are " Gremlin.getGremlinCount()
" gremlins.");
}
}
}
Ошибка «Массив записывается только в, никогда не считывается из» отображается при компиляции в 7-й строке:
Gremlin[] gremlins = new Gremlin[numGremlins];
и я ни за что на свете не могу понять, почему это не работает! Прошу прощения, если я веду себя глупо, но любая помощь будет высоко оценена 🙂 Спасибо!
Извините, быстрое редактирование, чтобы добавить другой класс, который я не упомянул!!
Я также получил следующий класс:
package com.java24hours;
public class Gremlin {
static int gremlinCount = 0;
public Gremlin() {
gremlinCount ;
}
static int getGremlinCount() {
return gremlinCount;
}
}
Затем я указал аргументы командной строки, настроив конфигурацию проекта.
Последнее редактирование !!… Большое всем спасибо, я действительно ценю это. Я использую IDE и переместил классы в папку с исходными пакетами, а не в пакет ‘com.java24hours’….и мои исходные коды работали нормально?! Очевидно, что я очень новичок! Еще раз спасибо всем 🙂
Комментарии:
1. Для чего вы используете массив? Вы заполняете его, а затем программа завершается.
2. Два незначительных замечания: это предупреждение, а не ошибка. — Вы можете удалить массив и просто вызвать
new Gremlin()
в цикле. Это должно удалить предупреждение.3. Вы заполняете массив, а затем никогда ничего с ним не делаете. Я подозреваю, что
Gremlin.getGremlinCount()
предполагается что-то с этим сделать, но это не так.4. Спасибо всем, проблема, похоже, решена! Я отредактировал свой оригинальный пост — еще раз спасибо 🙂
Ответ №1:
Это предупреждение, а не ошибка. Вы можете безопасно игнорировать это, и ваша программа будет функционировать так, как вы намереваетесь.
Предупреждение связано с тем, что вы создаете массив и заполняете его элементами. Но тогда вы фактически никогда не используете массив или элементы этого массива для чего-либо. Например, вы могли бы сделать
System.out.println("There are " gremlins.length " gremlins.");
для вывода длины массива. Это удалит предупреждение.
А еще лучше, если вы пишете это как упражнение для изучения static
методов и переменных, просто не используйте массив вообще.
Комментарии:
1. Также не используется сам массив, а не только его элементы.
2. @f1sh Ох… вы правы. Я неправильно прочитал
Gremlin.getGremlinCount()
, что использую массив.3. Просто примечание (это даже не удар по этому ответу), когда OP читает это — если вы решите использовать
gremlins.length
вместоGremlin.getGremlinCount()
для инструкции print , код, который отслеживает количество гремлинов со статической переменной, тогда будет неиспользован. Однако в этом случае вы можете не получить предупреждение, поскольку некоторые IDE не генерируют предупреждения для общедоступных методов и переменных.4. @HylianPikachu Хороший момент. Код OP выглядит как упражнение для изучения
static
, поэтому массив даже не нужен.
Ответ №2:
Вы ничего не делаете с элементами gremlins
массива. т.е. нигде ваш код не выполняет что-то подобное gremlins[i].someMethod()
, но это всего лишь предупреждение.