0

метод добавления директории из пакета Model,класс Device

  public Directory createDirect(String nameDir, int currentSize, String afterName) {      //Создание директории
    Directory directory = null;
    Directory current = firstDir;
    if (firstDir == null) {                                                     //Если список пусту
        directory = new Directory(nameDir, firstDir, currentSize);               //то создается новая директория
        directory.setNextDir(firstDir);                                          //полю nextDir объекта directory присваивается firstDir равное null
        firstDir = directory;                                                    // а firstDir присваивается directory
    } else {
        while (current.getNameDir() != afterName) {                              //пока не будет найдено место вставки

            if (current.getNextDir() == null) {                                   //Если дошли до конца списка и не нашли места вставки,
                break;                                                            //то выходим из цикла

            } else {                                                                //Иначе ищем дальше,пока не найдем
                current = current.getNextDir();                                     //перенос указателя на следующий элемент
            }
        }
        if (current.getNameDir() == afterName) {                                        //Сравниваем текущей элемент с afterName если равно то
            directory = new Directory(nameDir, firstDir, currentSize);                 //создаем объект директория
            directory.setNextDir(current.getNextDir());                                //указатель на nextDir текущего элемента
            current.setNextDir(directory);                                             //а текущему элементу уже присваиваем только что созданный
        } else {
            System.out.println("НЕВОЗМОЖНО ВСТАВИТЬ");                                 //Иначе невозможно добавить объект
            System.out.println("Элемент после-вставки не найден");
        }


    }
    return directory;
}

связываю Model c Controllerom

     public void buttonAddDirOnAction(javafx.event.ActionEvent event) {
        //Получение значений из текстовых полей
        String nameDir= textFieldNameDir.getText();
        int masLenght = Integer.parseInt(textFieldSizeDir.getText());
        String afterName = textFieldPrevName.getText();

        Directory dir = deviceManager.createDirect(nameDir, masLenght, afterName);
        refreshListDir();

        if (dir != null) {
//                //Обновление листа с процессами
            refreshListDir();
//              
        } else {
//               
            Alarm.showAlert(Alert.AlertType.INFORMATION, "Ошибка добавления директории",
                    "Директория не была добавлен", "Диретокрия с именем " + nameDir + " уже существует или не найдена директория c именем " + afterName + ","
                            + "\nкоторая должна предшествовать новой диреткоии");
        }
    }

Добавляется почему-то только первая директория , а в остальных случаях выдает ошибку,хотя в консольном режиме работает все хорошо.В чем ошибка? введите сюда описание изображения

User
  • 93
  • Отладкой пользовались? – JVic May 18 '18 at 21:12
  • @JVic изучаю недавно,что это? – User May 18 '18 at 21:14
  • Это возможность во время выполнения программы проверить состояние переменных и просмотреть весь путь выполнения программы, какой средой пользуетесь? – JVic May 18 '18 at 21:20
  • @JVic intelij idea – User May 18 '18 at 21:22
  • В начале функции createDirect поставьте точку остановки ( клавиша f5 по моему) затем нажмите на жучка возле стрелки которой вы запускаете программу ( shift f9 по-моему) и потом юзайте клавишу f8 а вообще советую сперва прочитать про отладку много вопросов отпадёт – JVic May 18 '18 at 21:29
  • @SergeyGornostaev почему не работает с типом String,когда все входные данные поменял на тип int все заработало моментально? – User May 19 '18 at 07:49

0 Answers0