Программа выдает исключение NullPointerException

Скажите, что это в строке 11. Любая помощь? Я просто пытаюсь отсортировать массив из 10 строк по длине.

import java.util.*;
public class lab10 {
    public static void main(String[] args) {
        Scanner key = new Scanner(System.in);

        System.out.println("Enter 10 strings and I'll sort them by their length. Smallest to largest.");
        String[] input = new String[10];
        String smallest = input[0];

        for(int i=0; i<10; i++){
            if (input[i].length() < smallest.length()){
                smallest = input[i];
            }
            System.out.println(smallest);
        }
        key.close();
    }   
}

1. Покажите нам, где находится линия 12. 2. Покажите нам, что такое исключение.

Jason 20.02.2019 00:50

if (input[i].length() < наименьшая.length()){ строка 11

Khaki Rock 20.02.2019 00:50

Исключение в потоке "основной" java.lang.NullPointerException является исключением

Khaki Rock 20.02.2019 00:51
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
3
24
1

Ответы 1

Эта строка создает массив нулевых ссылок на строки:

String[] input = new String[10];

Эта строка захватывает первую нулевую ссылку:

String smallest = input[0];

Эта строка пытается вызвать String.length() для нулевого значения:

    if (input[i].length() < smallest.length()){

Эта ситуация вызвана тем, что вы никогда не заполняете массив input строками, полученными от пользователя.

Редактировать: Чтобы собрать строки, попробуйте сделать что-то вроде этого:

String[] input = new String[10];
for(int i = 0; i < 10; i++) {
    input[i] = key.nextLine();
}
String smallest = input[0];

Как заполнить входной массив собранными строками?

Khaki Rock 20.02.2019 00:57

Отредактированный ответ.

Jason 20.02.2019 01:03

Другие вопросы по теме