Как реализовать справочник в массиве с заполнением через класс Scanner (Java)?
Всем привет! Я новичок в Java. Изучаю постепенно. Пишу небольшую программу справочник ABS (типа банковская система). Состоит из нескольких классов. Вопрос в следующем. Как мне организовать добавление и удаление информации о пользователе в массиве при выборе (через класс Scanner) через CASE: ADD и DELETE. А также просмотр добавленных пользователей? И в каком лучше классе это сделать или делать отдельный класс под каждый пункт SWITCH?
Пока хочу именно через массив организовать.
На данный момент получилось реализовать в классе menuABS в CASE ADD добавление через геттер, но хочу хранить в массиве.
Спасибо!
public class MainABS {
public static void main(String[] args) {
infoStart infoStart = new infoStart();
menuABS menuABS = new menuABS();
infoStart.infos();
menuABS.menuABS();
}
}
public class infoStart {
void infos() {
System.out.println("****************************************************");
System.out.println();
System.out.println("АВТОМАТИЗИРОВАННАЯ БАНКОВСКАЯ СИСТЕМА УЧЕТА КЛИЕНТОВ");
System.out.println();
System.out.println("****************************************************");
}
}
public class Users {
private String fname = null;
private String sname = null;
private String role = null;
private int usum;
public void setfName(String fname) {
this.fname = fname;
}
public void setsName(String sname) {
this.sname = sname;
}
public void setRole(String role) {
this.role = role;
}
public void getuSum(int usum) {
this.usum = usum;
}
public String fName() {
return fname;
}
public String sName() {
return sname;
}
public String role() {
return role;
}
public int uSum() {
return usum;
}
}
import java.util.Scanner;
public class menuABS {
Scanner scanner = new Scanner(System.in);
void menuABS() {
System.out.println();
System.out.println("SEE - посмотреть информацию о пользователях");
System.out.println("ADD - добавить пользователя");
System.out.println("EDIT - редактирование информации о пользователе");
System.out.println("DELETE - удалить информацию о пользователе");
System.out.println("ROLE - роли пользователя");
System.out.println();
System.out.println("****************************************************");
System.out.println("Выбор операции: ");
String input = scanner.nextLine(); // ввод пункта меню;
switch(input) {
case "SEE":
System.out.println("Заглушка для SEE");
break;
case "ADD":
Users users = new Users();
System.out.println("Введите имя: ");
String fn = scanner.nextLine();
users.setfName(fn);
System.out.println("Введите фамилию: ");
String sn = scanner.nextLine();
users.setsName(sn);
System.out.println("Заглушка для ADD");
break;
case "EDIT":
System.out.println("Заглушка для EDIT");
break;
case "DELETE":
System.out.println("Заглушка для DELETE");
break;
case "ROLE":
System.out.println("Заглушка для ROLE");
break;
}
}
}
Ответы (2 шт):
Первое. Имена классов начинаются с большой буквы (так принято, так удобно читать) А для добавления и удаления хорошо подходит ArrayList. в вашем случае будет выглядеть так
List usersList = new ArrayList<Users>();
usersList.add(users); //добавляет
usersList.remove(users); //удаляет...
Users[] allUsers = new Users[100];
Users user = new Users("name","surname"....);
//ADD
for (int i = 0; i < 100; i++){
if(allUsers[i}==null) { //проверяем ячейки на пустоту и если такую находим
allUsers[i] = user; //присваиваем ячейке нашего юзера
break; //и прерываем цикл
}
}
//DELETE
for (int i = 0; i < 100; i++){
if(allUsers[i] != null && allusers[i].equals(user)){ //убеждаемся что в ячейке есть юзер и сверяем ячейку на совпадение с нашим удаляемым юзером
allUsers[i] = null; //и когда находим обнуляем ячейку
break; // и прерываем цикл
}
}
правда тебе нужно будет переопределить equals() и hashCode()... но это уже другая история