Вы получаете NullPointerException
, потому что sales
это null
в строке for (row = 0; row < sales.length; row++)
.
Даже если вы установите значение переменной sales
в конструкторе Sales()
, вы никогда не вызовете этот конструктор (как new Sales()
).
Итак, чтобы исправить это NullPointerException
, вы можете вызвать конструктор Sales
в методе main()
следующим образом:
public static void main(String[] args)
{
new Sales();
calCityTotal();
calMonthlyTotal();
displayTable();
}
РЕДАКТИРОВАТЬ
После исправления NullPointerException
в вашем коде осталось еще несколько проблем.
Внутри calCityTotal()
, sales[0].length
следует исправить как sales[row].length
, я думаю.
citySum
массив инициализируется до длины sales
. Это означает, что citySum.length
равно количеству «строк». Но затем вы пишете citySum[col]
, что может привести к ArrayIndexOutOfBoundsException
, потому что число «столбцов» может превышать citySum.length
. (Это действительно происходит в вашей программе. Потому что число строк = 5 и количество столбцов = 6.)
LOCs или NLOCs не являются действительно хорошей мерой качества или здоровьем Вашего кода. Я рекомендую использовать статический анализ кода NDEPEND (для Вас взгляды .NET), чтобы видеть, как хорошо Ваше решение проектируется.
Я нахожу, что LOCs является хорошим измерением только на уровне метода. Таким образом, мне обычно нравится, когда мои методы соответствуют на экране (никакие мелкие шрифты). Другие метрики как Цикломатическое Покрытие Сложности и Кода (для Вас TDDers) в дополнение к Вашим модульным тестам могут дать лучшему, сопереживают, насколько здоровый Ваша кодовая база.
Там действительно не будет хорошим, категорическим или удовлетворяющим ответом для этого вопроса. Однако я скажу, что, по моему опыту, строки кода в классе уменьшаются с увеличенным опытом в Объектно-ориентированном программировании.
Большинство людей, которые не изучили принципы объектно-ориентированного проектирования, будет склонно иметь классы с партиями и большим количеством строк кода. Люди с большим объектно-ориентированным опытом будут склонны иметь меньше строк кода в классе, но будут иметь намного больше классов. И конечно, оба будут жаловаться друг на друга :-).
Если вы действительно ищете практическое правило, я бы сказал, что любой класс, который нельзя распечатать на одном листе бумаги с читаемым разрешением, возможно, слишком длинный. и должен быть переработан. Тогда ваша целевая отметка может быть порядка 100-200 строк, но, на мой взгляд, с фактором количества страниц немного легче справиться.
Я также твердо уверен, что показатель количества страниц следует рассматривать как факторную меру плохих качеств, а не как линейный. Если в базе кода есть класс из десяти страниц, мне кажется, что он как минимум в три миллиона раз хуже, чем небольшой класс с хорошей архитектурой.