0

Вопрос глупый, но сижу уже несколько часов. Мне нужно в созданный массив добавить кучу текстовых строк. Я хочу сделать это методом, который можно убрать подальше. Но реализация подкачала в области синтаксиса((

Я догадываюсь что ошибка в объявлении и, возможно, вызове метода. Как будет проще и правильнее написать этот кусок?

Спасибо.

P.S. Там строк под сотню, я просто убрал для примера

public static void main(String[] args) {

    setVariables();
    ArrayList<Boolean> answers = new ArrayList<Boolean>(); // ответы да и нет
    ArrayList<String> questions = new ArrayList<String>(); // текст вопросов
    questions.addQuestions();
}


 public static addQuestions(ArrayList<String>) {
     ArrayList<String> questions = new ArrayList<String>();
     questions.add("У Вас чаще бывает веселое и беззаботное настроение?");
     questions.add("Вы чувствительны к оскорблениям?");
     return questions;
}

2 Answers2

1

Вам нужно просто сделать void, которые ничего не возвращает и просто заполняет список (это не массив). В этот метод вы передаёте только ссылку на список, через которую в него добавляются элементы. И метод addQuestions вызывается напрямую, он относится к текущему классу, а не к списку.

public static void main(String[] args) {
    setVariables();
    ArrayList<Boolean> answers = new ArrayList<Boolean>();
    ArrayList<String> questions = new ArrayList<String>();
    addQuestions(questions);
}


public static void addQuestions(ArrayList<String> questions) {
    questions.add("У Вас чаще бывает веселое и беззаботное настроение?");
    questions.add("Вы чувствительны к оскорблениям?");
}
AvidCoder
  • 2,808
0

Вам нужно не передать массив в метод, а вернуть из метода заполненный ArrayList (не путайте с массивом, это другой тип). То, что вы пытаетесь сделать -- questions.addQuestions(); -- это попытка вызвать метод addQuestions() объекта questions. Для того, чтобы так можно было сделать, нужно, чтобы объект questions относился к классу, у которого определен метод addQuestions(). НО у вас questions объявлен как объект класса ArrayList. У этого класса есть методы add(), forEach(), clear() и прочие (смотрите справку), но нет метода addQuestions(), именно поэтому компилятор на ваш код и ругается.
Я бы сделал вот так:

public static void main(String[] args) {
    setVariables();
    ArrayList<Boolean> answers = new ArrayList<>(); // Тоже 
    List<String> questions = сreateQuestionList();
}

public static List<String> сreateQuestionList() { // Создает и возвращает список
    ArrayList<String> questions = new ArrayList<>();
    questions.add("У Вас чаще бывает веселое и беззаботное настроение?");
    questions.add("Вы чувствительны к оскорблениям?");
    return questions;
}

А вообще читайте сообщения об ошибках, которые выдает компилятор. Чаще всего они прямо и недвусмысленно указывают на ошибки в вашем коде.

Прочитайте также какую-нибудь книжку по Java (см. Книги и учебные ресурсы по Java), тогда дело пойдет быстрее и шишек меньше будет.

m. vokhm
  • 3,377
  • Вопрос был касательно метода, заполняющего список, а не создающего его. – AvidCoder Jun 21 '19 at 13:19
  • @ИмяФамилия вопрос был вообще про то, как передать массив в метод. Если начинающий пытается что-то сделать, но пока неловко и неправильно, лучше показать, как сделать то, что ему надо, ловчее и правильно, чем так же неловко, но правильно. – m. vokhm Jun 22 '19 at 13:55
  • имя метода должно начинаться со строчной буквы, а не с заглавной – goodbyte Jun 22 '19 at 17:19
  • @ВладиславЭстрин Вы правы. Очепятка, не заметил второпях. Исправил. – m. vokhm Jun 23 '19 at 06:41