Olá,
Estou fazendo um trabalho do meu curso, e não estou conseguindo alterar dados de um objeto dentro de um Vector. Eu possuo um objeto chamado Obra, que armazena dados de um livro, dentro desse objeto existe um boolean chamado “disponibilidade” para dizer se a obra está disponível ou não para locação.
O que eu preciso é mudar essa “disponibilidade” para false para identificar que a obra já está locada e não realizar uma nova locação.
Classe Obra:
package biblioteca;
import javax.swing.JOptionPane;
public class Obra {
private String titulo;
private int codigo;
private Autor autor;
private Editora editora;
private int qtdadepag;
private int ano;
private int edicao;
private boolean disponivel;//indica se o livro está disponível
public Obra(int codigo, Autor autor, Editora editora){
titulo = JOptionPane.showInputDialog("Título ");
this.codigo = codigo;
this.autor = autor;
this.editora = editora;
qtdadepag = Integer.parseInt(JOptionPane.showInputDialog("Quantidade de Páginas: "));
ano = Integer.parseInt(JOptionPane.showInputDialog("Ano: "));
edicao = Integer.parseInt(JOptionPane.showInputDialog("Edição: "));
disponivel = true;
//atribui valores às variáveis
}
public void setDisponivel(boolean disponivel){
this.disponivel = disponivel;//atribui true ou false para dizer se a obra está disponível
}
public String getTitulo(){
return titulo;//retorna o título
}
public int getCodigo(){
return codigo;//retorna o código do livro
}
public boolean getDisponivel(){
return disponivel;//retorna a disponibilidade do livro
}
}
Classe Principal:
package biblioteca;
import java.util.Vector;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class Main {
static Scanner s = new Scanner(System.in);
static Vector aluno = new Vector();
static Vector professor = new Vector();
static Vector autor = new Vector();
static Vector editora = new Vector();
static Vector obra = new Vector();
public static void main(String[] args) {
menu();//chama o menu
}
public static void menu(){
int opcao;
do {
String menu = "Escolha a opção desejada:"
+ "\n1 - Cadastrar Aluno"
+ "\n2 - Cadastrar Professor"
+ "\n3 - Cadastrar Autor"
+ "\n4 - Cadastrar Editora"
+ "\n5 - Cadastrar Obra"
+ "\n6 - Empréstimo para Aluno"
+ "\n7 - Finalizar Programa";
opcao = Integer.parseInt(JOptionPane.showInputDialog(menu));
switch (opcao){
case 1:
cadastroAluno();
break;
case 2:
cadastroProfessor();
break;
case 3:
cadastroAutor();
break;
case 4:
cadastroEditora();
break;
case 5:
cadastroObra();
break;
case 6:
emprestimoAluno();
break;
case 7:
break;
default:
JOptionPane.showMessageDialog(null, "Opção Inválida!");
}
} while(opcao!=7);//faz repetir os comandos acima até que seja colocado o número para sair do programa
}
public static void cadastroAluno(){
Aluno novoaluno = new Aluno ();
aluno.add(aluno.size(), novoaluno);
}
public static void cadastroProfessor(){
Professor novoprofessor = new Professor ();
professor.add(professor.size(), novoprofessor);
}
public static void cadastroAutor(){
Autor novoautor = new Autor();
autor.add(autor.size(), novoautor);
}
public static void cadastroEditora(){
Editora novaeditora = new Editora();
editora.add(editora.size(), novaeditora);
}
public static void cadastroObra(){
if (autor.size() == 0){
JOptionPane.showMessageDialog(null, "Nenhum Autor Cadastrado!");
} else{
Autor auxautor;
String idautores = "Selecione o Autor Desejado:\n";
for (int x=0; x<autor.size(); x++){
auxautor = (Autor) autor.elementAt(x);
idautores = idautores+"ID: "+(x+1)+" Autor: "+auxautor.getNomeAutor()+"\n";
}
int idautor = Integer.parseInt(JOptionPane.showInputDialog(idautores));
auxautor = (Autor) autor.elementAt(idautor-1);
if (editora.size() == 0){
JOptionPane.showMessageDialog(null, "Nenhuma Editora Cadastrada!");
} else{
Editora auxeditora;
String ideditoras = "Selecione a Editora Desejada:\n";
for (int x=0; x<editora.size(); x++){
auxeditora = (Editora) editora.elementAt(x);
ideditoras = ideditoras+"ID: "+(x+1)+" Editora: "+auxeditora.getNomeEditora()+"\n";
}
int ideditora = Integer.parseInt(JOptionPane.showInputDialog(ideditoras));
auxeditora = (Editora) editora.elementAt(ideditora-1);
Obra novaobra = new Obra(obra.size()+1, auxautor, auxeditora);
obra.add(obra.size(), novaobra);
}
}
}
public static void emprestimoAluno(){
if (aluno.size() == 0){
JOptionPane.showMessageDialog(null, "Nenhum Aluno Cadastrado!");
} else{
Aluno auxaluno;
String idalunos = "Selecione o Aluno Desejado:\n";
for (int x=0; x<aluno.size(); x++){
auxaluno = (Aluno) aluno.elementAt(x);
idalunos = idalunos+"ID: "+(x+1)+" Aluno: "+auxaluno.getNomeAluno()+"\n";
}
int idaluno = Integer.parseInt(JOptionPane.showInputDialog(idalunos));
auxaluno = (Aluno) aluno.elementAt(idaluno-1);
if (obra.size() == 0){
JOptionPane.showMessageDialog(null, "Nenhuma Obra Cadastrada!");
} else{
Obra auxobra;
String idobras = "Selecione a Obra Desejada:\n";
for (int x=0; x<obra.size(); x++){
auxobra = (Obra) aluno.elementAt(x);
idobras = idobras+"ID : "+(x+1)+" Título: "+auxobra.getTitulo()+"\n";
}
int idobra = Integer.parseInt(JOptionPane.showInputDialog(idobras));
auxobra = (Obra) obra.elementAt(idobra-1);
int cod = auxobra.getCodigo();
int posicaoemprestimo = 0;
boolean achado = false;
for (int x=0; x<3; x++){
if (auxaluno.getEmprestimoAluno(x) == 0){
achado = true;
posicaoemprestimo = x;
}
}
if (achado == false){
JOptionPane.showMessageDialog(null, "O Aluno está com o limite de empréstimos!");
} else{
if (auxobra.getDisponivel() == false){
JOptionPane.showMessageDialog(null, "O Livro já está emprestado!");
} else{
auxaluno.setEmprestimoAluno(cod, posicaoemprestimo);
auxobra.setDisponivel(false);
//aqui eu precisaria atualizar uma determinada posição do Vector Obra
//para mudar o boolean "Disponivel" de true para false,
//pensei em algo como:
//obra.elementAt(idobra-1) = auxobra;
//mas não funciona
JOptionPane.showMessageDialog(null, "Empréstimo feito com sucesso!");
}
}
}
}
}
}
Como eu poderia fazer isso?
Quem puder me ajudar eu agradeço!