Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
296 / 125 / 106
Регистрация: 30.10.2015
Сообщений: 690

Как создать вектор, который содержит классы?

12.12.2016, 21:45. Показов 2381. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно что-то подобное (пример на c++):
Кликните здесь для просмотра всего текста

C++
1
2
3
vector <MyStruct> v;  //Вектор v содержит структуры типа MyStruct
MyStruct Student;
v.push_back(Student);

В 12 строке я пытаюсь добавить класс "People" в вектор "vector", но не получается. Видно не хватает что-то вроде второй строчки из моего первого спойлера.
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.Scanner;
import java.util.Vector;
 
public class First {
  public static void main(String[] argv) {
    Scanner scan = new Scanner(System.in);
    Vector vector = new Vector(3);
    float amount = scan.nextInt();
    if (amount <= 100 && amount >= 10) { 
      for (int i = 0; i < amount; i++) {
        if (i < 3) {
          vector.addElement();   
        }
      }   
    }
  }
 
  public class People {
    String lastname, name;
    float averageValue; 
  }
}

Подскажите пожалуйста, как это сделать?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.12.2016, 21:45
Ответы с готовыми решениями:

Запись в файл обьекта который содержит вектор
У меня есть класс Map который содержит вектор обьектов типа Tile. Возможно ли корректное чтение такого запианного через ofstream обьекта...

Как создать класс, который содержит элементы другого класса
Добрый день, я чисто любитель, начала сама потихоньку разбираться в с++, благополучно дошла до классов и сделала класс konto (банковский...

Cформировать вектор С, который содержит элементы, присутствующие одновременно в массивах А и В
Даны два вектора А и В. сформировать вектор С,который содержит элементы,присутствующие в обоих массивах. В векторе С(m) определить сумму...

10
 Аватар для Alradalion
132 / 126 / 85
Регистрация: 13.09.2013
Сообщений: 485
13.12.2016, 11:07
People лучше вынести в отдельный класс.
И внутри цикла:
Java
1
2
People people =new People();      
vector.addElement(people );
Или более коротко:
Java
1
vector.addElement(new People());
1
296 / 125 / 106
Регистрация: 30.10.2015
Сообщений: 690
13.12.2016, 18:15  [ТС]
Почему выдает предупреждения?

Note: First.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Scanner;
import java.util.Vector;
 
public class First {
  public static void main(String[] argv) {
    Scanner scanner = new Scanner(System.in);
    Vector vector = new Vector(3);    
    int amountPeople = scanner.nextInt();
    if (amountPeople <= 100 && amountPeople >= 10) {
      for (int i = 0; i < amountPeople; i++) {
        if (i < 3) {
          vector.addElement(new People()); 
        }
      }
    }
  }
}

Класс People:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
public class People {
  String lastname, name;
  float averageValue; 
}
0
0 / 0 / 1
Регистрация: 28.11.2016
Сообщений: 4
13.12.2016, 18:21
Nemovok, функция Scanner.nextInt может бросать три исключения -
InputMismatchException
NoSuchElementException
IllegalStateException, компилятор вас об этом предупреждает.

Вы можете не проверять код на исключения в небольших проектах для себя, но это является плохим стилем.
0
296 / 125 / 106
Регистрация: 30.10.2015
Сообщений: 690
13.12.2016, 19:04  [ТС]
Теперь не могу перехватить исключение... Как правильно сделать?
Java
1
2
3
4
5
6
7
8
9
10
import java.util.Scanner;
 
public class First {
  public static void main(String[] argv) {
    Scanner scan = new Scanner(System.in);
    try {
      int amountPeople = scan.nextInt();
    } catch (InputMismatchException e) amountPeople = 10; 
  }
}
0
0 / 0 / 1
Регистрация: 28.11.2016
Сообщений: 4
13.12.2016, 20:20
Nemovok, если вам важно именно избавится от предупреждения компилятора, изменить сигнатуру функции так:
Java
1
public static void main(String[] argv) throws java.lang.RuntimeException
Если же важно именно перехватить исключение - то в вашем коде две ошибки:
1) amountPeople доступно только внутри блока try, лучше вынести объявление на блок выше:
Java
1
2
3
4
5
Scanner scan = new Scanner(System.in);
int amountPeople;
try {
     amountPeople= scan.nextInt();
}
2) catch блок все же лучше оформлять именно в виде блока кода:
Java
1
2
3
catch (InputMismatchException e) {
    amountPeople = 10;
}
Следует помнить, что вам потребуется еще два блока catch для каждого типа исключения.
0
296 / 125 / 106
Регистрация: 30.10.2015
Сообщений: 690
13.12.2016, 21:26  [ТС]
Благодарю вас, а теперь как можно обратиться к полю класса People определенного элемента вектора?
В c++ я бы сделал вот так:
C++
1
vec.at(i).value = 0;
0
0 / 0 / 1
Регистрация: 28.11.2016
Сообщений: 4
13.12.2016, 21:58
Nemovok, можно использовать
Java
1
vector.elementAt(i).value
либо
Java
1
vector.get(i).value
0
296 / 125 / 106
Регистрация: 30.10.2015
Сообщений: 690
15.12.2016, 00:24  [ТС]
Не работает. Ошибка: cannot find symbol
Java
1
2
3
People people = new People();
vec.addElement(people);
vec.elementAt(i).lastname = scan.nextLine();
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
15.12.2016, 10:29
Nemovok, почему бы вам просто книгу не почитать? Программирование методом тыка это плохой выбор.
1
 Аватар для Alradalion
132 / 126 / 85
Регистрация: 13.09.2013
Сообщений: 485
15.12.2016, 13:20
Лучший ответ Сообщение было отмечено Nemovok как решение

Решение

Потому что вы не типизировали вектор. Он вам и возвращает Object, который о поле lastname знать ничего не знает.
Поправьте:
Java
1
Vector<People> vector = new Vector(3);
И классы должны лежать внутри одного пакета, иначе ничего не получите
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.12.2016, 13:20
Помогаю со студенческими работами здесь

Сформировать вектор С, который содержит элементы второго столбца транспонированной матрицы D
Задача. Дана матрица D= |3 12 9 1 7| |2 4 11 2 10| |7 14 12 5...

Вычислить вектор C, который содержит нечетные элементы вектора A, которых нет в векторе B
1)Даны два вектора целых чисел A и B.Вычислить вектор C, который содержит нечетные элементы вектора A, которых нет в векторе B. ...

Создать файл, который содержит данные о заводе
Список заводов(предприятий) города, которые выпускают электронное оборудование:название завода,вид продукции, кол-во изготавливаемой...

Создать интерфейс, который содержит описание методов
создать интерфейс, который содержит описание методов определения расстояния от точки до плоскости и метод проверки принадлежности этой...

Создать типизированный файл, который содержит сведения об автомобилях
program n1; type rec = record marka: string; firma: string; cost: integer; end; var


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru