Как остановить ошибку NoSuchElementException из этой части кода?

Это часть моего кода из проекта, который выдает ошибку. Я практикую инкапсуляцию, но не могу понять, почему я получаю эту ошибку, когда устанавливаю значения в списке массивов.

Есть два класса

1) Создать_бухгалтера

2) Админкладовая

Оба они находятся в одном пакете: com.admin

package com.admin;
import java.util.InputMismatchException;
import java.util.Scanner;

class Create_accountant {

Adminstoreroom admin = new Adminstoreroom();

void Creating() {
    System.out.println();
    System.out.println("\t\t\t\t Create New Accoutant");
    System.out.println();
    name();
    pass();

}

void name() {
    Scanner input = new Scanner(System.in);

    System.out.println();
    System.out.print("Enter his/her name: \t");
    String name = null;

    try {
        admin.setAccName(input.nextLine());
        System.out.println("done");
    }
    catch(InputMismatchException e) {
        System.out.println("Wrong input. Please enter the name again.");
        name();
    }
    catch(Exception e) {
        System.out.println("Here is the main problem " + e);
    }
    admin.setAccName(name);
    input.close();
}

private void pass() {
    Scanner input = new Scanner(System.in);

    System.out.println();
    System.out.print("Enter his/her password: \t");

    try {
        admin.setAccPassword(input.nextLine());
    }
    catch(InputMismatchException e) {
        System.out.println("Wrong input. Please enter the password again.");
        pass();
    }
    catch(Exception e) {
        System.out.println("Here is the main problem");
    }
    input.close();
}

Проблема внутри 2 блоков try.

try {
        admin.setAccName(input.nextLine());
        System.out.println("done");
    }

И name(), и pass() идут в блок catch (исключение e). Когда я запускаю этот код, вывод из приведенной выше попытки

Вот основная проблема java.util.NoSuchElementException: No line found

Второй класс

package com.admin;

import java.util.ArrayList;

class Adminstoreroom {


//These arrays are used for Storing accountant info in the admin sections
private static ArrayList<String> accName = new ArrayList<String>(30);
private static ArrayList<String> accPassword = new ArrayList<String>(30);

//Accountant Names
public void setAccName(String an) {
    accName.add(an);
}
public String getAccName(int i) {
    return accName.get(i);
}

//Accountant Password
public void setAccPassword(String ap) {
    accPassword.add(ap);
}
public String getAccPassword(int i) {
    return accPassword.get(i);
}

person ferdous adit    schedule 03.08.2017    source источник
comment
Было бы лучше, если бы вы могли опубликовать полную ошибку Stacktrace. Спасибо!   -  person demouser123    schedule 03.08.2017
comment
Несвязанный: было правильным решением удалить этот другой вопрос о Class.forName(). Но два комментария: A) вы должны понимать, что forName() — это отражение. А отражение — это очень сложная тема в сборнике тем по Java. Значение: если вы действительно не поняли эту простую синтаксическую проблему, вам лучше изучить основы Java, а не начинать использовать отражение. Рефлексия сложна для людей, которые знают о Java, для людей, которым не хватает основ, это будет просто одна большая разочаровывающая серьезная вещь, которая не работает.   -  person GhostCat    schedule 11.08.2017
comment
Б) глядя на вашу историю постинга, кажется, что вы скорее идете назад. У вас уже были вопросы, где вы выкладывали исходники, но сейчас вы задали тот, на котором был скриншот. Пожалуйста, поймите, что повторные неправильные вопросы могут привести к тому, что в какой-то момент вам запретят задавать вопросы. Поэтому, пожалуйста: не только изучите основы Java, но и научитесь как спрашивать здесь. В противном случае ваши следующие вопросы будут разочаровывать вас снова и снова.   -  person GhostCat    schedule 11.08.2017
comment
Спасибо за ваше предложение @GhostCat. Я очень ценю, что вы потратили свое время на исправление моих ошибок.   -  person ferdous adit    schedule 12.08.2017
comment
Вы гораздо более опытны в Java, чем я. Могу я спросить, например, откуда вы начали изучать Java или как мне решить мою основную проблему? @GhostCat.   -  person ferdous adit    schedule 12.08.2017
comment
Это широкая тема :-) в основном я начал свою карьеру в Java более 20 лет назад. Я учился, и наш университет был первым за пределами США, который начал работать с Java. Моим основным занятием было создание компиляторов, и это приводит к определенному отношению к языкам. По сути, вы стремитесь понять внутреннюю структуру и то, как вещи складываются воедино. Плюс: мне просто нравится язык. И как минимум половина моей профессиональной карьеры позволяла мне практиковать Java. Моя рекомендация: найдите хорошую книгу или изучите учебники по оракулу — сверху вниз. Тогда: начни с малого...   -  person GhostCat    schedule 12.08.2017
comment
Значение: не пытайтесь выучить 5 новых вещей одновременно. Многие люди начинают использовать IDE, а затем хотят создать приложение Swing или JavaFX, которое взаимодействует с базами данных. И т.д. Как сказано - предлагаю идти медленнее - но вместо этого углубляться. По-настоящему понимать каждое слово, которое вы записываете. Не принимайте непонимание чего-либо. Читайте и учитесь — спрашивайте, когда застряли. Самое главное: найдите реальных или (второй вариант) удаленных людей, которые просматривают ваш код. Вы узнаете больше всего, когда другие комментируют вашу работу. Codereview.stackexchange.com - одно из мест для этого....   -  person GhostCat    schedule 12.08.2017
comment
Но поймите, что у этих онлайн-сообществ есть правила, и от них требуется качественный вклад! Если вы нашли это полезным... Не стесняйтесь просмотреть мои ответы или вопросы и проголосовать здесь или там :-)   -  person GhostCat    schedule 12.08.2017