Acabei de entrar nos estudos da Classe Collection, e estou focando em ArrayList, por isso tive uma ideia de criar um programa simples de cadastro de clientes que geraria uma lista
de 10 cadastro de usuarios. Assim usei o Scanner como entrada de dados para atribuir as variaveis do objeto.
Porém sempre que o sistema reinicia ele cria o mesmo objeto, gostaria de saber se tem como criar um programa que solicita os dados via Scanner e vai criando objetos individuais
e guardando eles no ArrayList, como se fosse banco de dados, O arraylist pode ser usado dessa forma? Será que é possivel tal programa que solicita dados e vai criando instancias individuais? Ou será que o que eu quero tem tudo a ver com Banco de Dados? por favor me ajudem com exemplos.
Grato!!!
// CLASSE DE CADASTRO DE USUARIOS...
import java.util.Scanner;
import java.util.ArrayList;
public class Usuarios {
public static void main(String[] args) {
Scanner l = new Scanner(System.in);
System.out.println("BEM VINDO AO CADASTRO DE USUÁRIOS");
System.out.println("Digite os dados: "+"\nNome ");
String nome = l.nextLine();
System.out.println("Login desejado ");
String login = l.nextLine();
System.out.println("Cargo ");
String cargo = l.nextLine();
System.out.println("Senha de acesso");
int senha = l.nextInt();
Dados usuario;
usuario = new Dados();
usuario.setNome(nome);
usuario.setLogin(login);
usuario.setCargo(cargo);
ArrayList<Dados> usuarios = new ArrayList<Dados>();
usuarios.add(usuario);
System.out.println(usuario.getNome()+"\n"+usuario.getLogin()+"\n"+usuario.getCargo());
}
}
// CLASSE QUE GUARDA AS VARIAVEIS DOS OBJETOS...
public class Dados {
private String nome;
private int senha;
private String login;
private String cargo;
public Dados(){
}
public String getNome(){
return nome;
}
public void setNome(String name){
nome = name;
}
public String getLogin(){
return login;
}
public void setLogin(String log ){
login = log;
}
public String getCargo(){
return cargo;
}
public void setCargo(String car){
cargo = car;
}
}
Entendi, mas por exemplo se eu criar um ciclo de 30 repetições pelo while, será que ele consegue criar 30 objetos diferentes, e armazenar os 30 no arrayList, se tiver como, passa o codigo para mim, minha dificuldade está em criar esses objetos individuais.
Acredito que esse exemplo se aplique dentro do que você espera, caso você não entender alguma parte da lógica é só retornar que eu explico.
// CLASSE DE CADASTRO DE USUARIOS...
import java.util.List;
import java.util.Scanner;
import java.util.ArrayList;
public class Main {
private Scanner l;
private boolean execute;
private List<Dados> dados;
public static void main(String[] args) {
new Main();
}
private Main() {
l = new Scanner(System.in);
execute = true;
dados = new ArrayList<Dados>();
System.out.println("BEM VINDO AO CADASTRO DE USUÁRIOS");
while (execute) {
String opcao = menu();
if (opcao.equalsIgnoreCase("n")) {
cadastrar();
} else if (opcao.equalsIgnoreCase("l")) {
listarCadastros();
} else if (opcao.equalsIgnoreCase("x")) {
execute = false;
} else {
System.out.println("\nOpção Inválida seu noob !!! \n");
}
}
}
private String menu() {
System.out.println("Selecione a opção:");
System.out.println("N - Novo cadastro");
System.out.println("L - Listar cadastros");
System.out.println("X - Sair");
return l.nextLine();
}
private void cadastrar() {
boolean cadastrando = true;
while (cadastrando) {
System.out.println("Cadastro de Usuário");
Dados d = new Dados();
d.setNome(textInput("Nome:"));
d.setLogin(textInput("Login: "));
d.setCargo(textInput("Cargo: "));
String cadastrar = textInput("Adicionar cadastro (S/N) ?");
if (cadastrar.equalsIgnoreCase("s")) {
System.out.println("Cadastro adicionado !!!");
dados.add(d);
} else if (cadastrar.equalsIgnoreCase("n")){
System.out.println("Cadastro ignorado !!!");
} else {
System.out.println("\nOpção inválida seu noob, vou ignorar o cadastro só pra você ter que digitar denovo !!! \n");
}
String continua = textInput("Continuar cadastrando (S/N) ?");
if (continua.equalsIgnoreCase("N")) {
cadastrando = false;
} else if (continua.equalsIgnoreCase("s")){
// se for s sai do if e volta para o inicio do while
} else {
System.out.println("\nOpção inválida seu noob, eu vou sair só porque você não colabora !!! \n");
cadastrando = false;
}
}
}
private void listarCadastros() {
if (dados.size() == 0) {
System.out.println("\nNão existem cadastros !!!\n");
} else {
System.out.println("\nLista de Cadastros\n");
for (int i = 0; i < dados.size(); i++) {
Dados d = dados.get(i);
System.out.println("Cadastro número: " + i);
System.out.println("\tNome: " + d.getNome());
System.out.println("\tLogin: " + d.getLogin());
System.out.println("\tCargo: " + d.getCargo() + "\n");
}
System.out.println("\nFim da lista\n");
}
}
private String textInput(String label) {
System.out.println(label);
return l.nextLine();
}
}
public class CadastraUsuarios {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
ArrayList listaDeUsuarios = new ArrayList();
Usuario usuario = new Usuario();
int op = 0;
System.out.println("Digite 1 para cadastrar usuários ou 0 para sair !");
op = scanner.nextInt();
while(op != 0){
System.out.println("Bem vindo ao sistema de cadastros de usuários");
System.out.println("Digite o nome do usuário");
usuario.setNome(scanner.nextLine());
System.out.println("Digite o cargo do usuário");
usuario.setCargo(scanner.nextLine());
System.out.println("Digite o login");
usuario.setLogin(scanner.nextLine());
System.out.println("Digite a senha");
usuario.setLogin(scanner.nextLine());
listaDeUsuarios.add(usuario);
usuario = new Usuario();
System.out.println("Digite 1 para cadastrar usuários ou 0 para sair !");
op = scanner.nextInt();
}
}
LeandroAlff não sei se te responde mas basta copiar o codigo acima e colar diretamente na IDE, contanto que o nome da classe seja o mesmo nome do arquivo, foi assim
que eu testei o codigo do ezequiel, e deu certo.