Обработка нулевой проблемы с помощью метода .split & JOP.InputDialog Java - PullRequest
0 голосов
/ 16 октября 2018

Так что это фрагмент кода для универа, который я делаю довольно новым для java, так что извините за плохой код.Одним из ограничений является то, что код не должен иметь ошибок при выходе / отмене.Итак, я понимаю, что кнопка отмены на JOptionPane.showInputDialog возвращает ноль, но кажется, что раздел 'parts = temp.split ("") "по неизвестным мне причинам блокирует ввод от нулевого значения?Когда я избавляюсь от parts = temp.split (), при нажатии кнопки отмены не возникает исключение, но, очевидно, цикл for не работает. Поэтому мне нужно сделать, чтобы не было исключений или ошибок, возникающих приОтмена. Любая помощь будет оценена!:) ** Редактировать ** Нам также запрещено использовать циклы catch, try или break в любых циклах while. Должны выходить с true / false.

    while (X == true && flag == true) {
        input = JOptionPane.showInputDialog("Tell me more about " + topics[z]);
        String temp = input;
        if (input != null) {
            flag = true;
        }
        else if (input == null) {
            flag = false;
        }

        parts = temp.split(" ");

        for (int i = 0; i < parts.length; i++) {
            for (int x = 0; x < topics.length; x++) {
                if (parts[i].equals(topics[x])) {
                    cut = parts[i];
                    break;
                }
            }
        }
        for (int i = 0; i < topics.length; i++) {
            if (cut.equals(topics[i])) {
                z = i;
                break;
            }

        }

        input = cut;
        System.out.print(cut);
        System.out.println(z);

        X = Arrays.asList(topics[z]).contains(input);
        System.out.println(X);

    }

1 Ответ

0 голосов
/ 16 октября 2018

Вам нужно написать parts = temp.split(" "); внутри if (input != null) и убедиться, что parts инициализируется и до этого;в противном случае вы получите NPE в строке parts.length.Я предполагаю, что topics не равно нулю:

while (X == true && flag == true) {
        input = JOptionPane.showInputDialog("Tell me more about " + topics[z]);
        String temp = input;
        parts = new String[initialArraySize];

        if (input != null) {
            parts = temp.split(" ");
            flag = true;
        }
        else if (input == null) {
            flag = false;
        }



        for (int i = 0; i < parts.length; i++) {
            for (int x = 0; x < topics.length; x++) {
                if (parts[i].equals(topics[x])) {
                    cut = parts[i];
                    break;
                }
            }
        }
        for (int i = 0; i < topics.length; i++) {
            if (cut.equals(topics[i])) {
                z = i;
                break;
            }

        }

        input = cut;
        System.out.print(cut);
        System.out.println(z);

        X = Arrays.asList(topics[z]).contains(input);
        System.out.println(X);

    }
...