Corso Live Part-time Su Fondamenti Di Java › Forum › Java › Libreria
- Questo topic ha 2 risposte, 1 partecipante ed è stato aggiornato l'ultima volta 2 anni, 10 mesi fa da Alex.
-
AutorePost
-
17 Febbraio 2022 alle 17:42 #5651AlexOspite::
Professore vorrei un aiuto su un’istruzione per capire cosa sto sbagliando.
Allora, ho due classi, la classe Utenti e la classe Libri.LA CLASSE UTENTI E’ QUESTA:
package it;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class Utenti {
String codiceFiscale;
String nome;
String cognome;
String cittàDiResidenza;
String numeroDiTelefono;
List<String>libriAssegnati = new ArrayList<String>();
List<Utenti> elencoUtenti = new ArrayList<Utenti>();public String getCodiceFiscale() {
return codiceFiscale;
}public void setCodiceFiscale(String codiceFiscale) {
this.codiceFiscale = codiceFiscale;
}public String getNome() {
return nome;
}public void setNome(String nome) {
this.nome = nome;
}public String getCognome() {
return cognome;
}public void setCognome(String cognome) {
this.cognome = cognome;
}public String getCittàDiResidenza() {
return cittàDiResidenza;
}public void setCittàDiResidenza(String cittàDiResidenza) {
this.cittàDiResidenza = cittàDiResidenza;
}public String getNumeroDiTelefono() {
return numeroDiTelefono;
}public void setNumeroDiTelefono(String numeroDiTelefono) {
this.numeroDiTelefono = numeroDiTelefono;
}@Override
public String toString() {
return “Utenti [libriAssegnati=” + libriAssegnati + “]”;
}public List<String> getLibriAssegnati() {
return libriAssegnati;
}public void setLibriAssegnati(List<String> libriAssegnati) {
this.libriAssegnati = libriAssegnati;
}public void inserisciNuovoUtente() {
Scanner tas = new Scanner(System.in);
String cf, n, c, cdR, numTel;
Utenti u = new Utenti();
System.out.print(“Inserisci il codice fiscale: “);
cf = tas.nextLine();
u.setCodiceFiscale(cf);
System.out.print(“Inserisci il nome: “);
n = tas.nextLine();
u.setNome(n);
System.out.print(“Inserisci il cognome: “);
c = tas.nextLine();
u.setCognome(c);
System.out.print(“Inserisci la città di residenza: “);
cdR = tas.nextLine();
u.setCittàDiResidenza(cdR);
System.out.print(“Inserisci il numero di telefono: “);
numTel = tas.nextLine();
u.setNumeroDiTelefono(numTel);elencoUtenti.add(u);
}
public void rimuoviUtente (String cdf) {
for (Utenti utente : elencoUtenti) {
if (utente.getCodiceFiscale().equalsIgnoreCase(cdf)) {
elencoUtenti.remove(utente);
}
}
}public void stampaElencoUtenti() {
int index = 1;
for (Utenti utente : elencoUtenti) {
System.out.println(“UTENTE NUMERO ” + index);
System.out.println(utente.getCodiceFiscale().toUpperCase());
System.out.println(utente.getCognome());
System.out.println(utente.getNome());
System.out.println(utente.getCittàDiResidenza());
System.out.println(utente.getNumeroDiTelefono());
System.out.println(libriAssegnati.toString());System.out.println(“—————————“);
index++;
}
}public void assegnaLibri () {
}
}
LA CLASSE LIBRI E’ QUESTA:
package it;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class Libri extends Utenti{
String titolo;
String autore;
String casaEditrice;
int annoDiPubblicazione;
boolean stato = true;
List<Libri> elencoLibri = new ArrayList<Libri>();public String getTitolo() {
return titolo;
}public void setTitolo(String titolo) {
this.titolo = titolo;
}public String getAutore() {
return autore;
}public void setAutore(String autore) {
this.autore = autore;
}public String getCasaEditrice() {
return casaEditrice;
}public void setCasaEditrice(String casaEditrice) {
this.casaEditrice = casaEditrice;
}public int getAnnoDiPubblicazione() {
return annoDiPubblicazione;
}public void setAnnoDiPubblicazione(int annoDiPubblicazione) {
this.annoDiPubblicazione = annoDiPubblicazione;
}public boolean isStato() {
return stato;
}public void setStato(boolean stato) {
this.stato = stato;
}public void inserisciLibro () {
String tit, aut, casaEd;
int annoPub;
boolean stato1 = true;
Scanner ins = new Scanner(System.in);Libri l = new Libri();
System.out.print(“Inserisci il titolo del libro: “);
tit = ins.nextLine();
l.setTitolo(tit);
System.out.print(“Inserisci l’autore: “);
aut = ins.nextLine();
l.setAutore(aut);
System.out.print(“Inserisci casa editrice: “);
casaEd = ins.nextLine();
l.setCasaEditrice(casaEd);
System.out.print(“Inserisci anno di pubblicazione: “);
annoPub = ins.nextInt();
l.setAnnoDiPubblicazione(annoPub);
l.setStato(stato1);elencoLibri.add(l);
}
public void rimuoviLibro (String titolo) {
for (Libri libro : elencoLibri) {
if (libro.getTitolo().equalsIgnoreCase(titolo)) {
elencoLibri.remove(libro);
}
}
}public void stampaElencoLibri() {
int index = 1;
for (Libri libro : elencoLibri) {
System.out.println(“LIBRO NUMERO ” + index);
System.out.println(libro.getTitolo());
System.out.println(libro.getAutore());
System.out.println(libro.getCasaEditrice());
System.out.println(libro.getAnnoDiPubblicazione());
System.out.println(“—————————————-“);
}
}public void prestito () {
//String utente;
String titoloLibroDaPrestare;
Scanner titoPres = new Scanner(System.in);
System.out.print(“Inserisci il titolo del libro che vuoi in prestito: “);
titoloLibroDaPrestare = titoPres.nextLine();
//System.out.print(“Inserisci il codice fiscale dell’utente a cui prestare il libro: “);
//utente = titoPres.nextLine();for (Libri libro : elencoLibri) {
if (libro.getTitolo().equalsIgnoreCase(titoloLibroDaPrestare) && libro.isStato() == true) {
super.libriAssegnati.add(titoloLibroDaPrestare);
System.out.println(“Libro prestato”);
libro.setStato(false);
} else {
System.out.println(“Il libro è già stato prestato oppure non è presente nell’elenco”);
}
}
}public void restituzione (String nomeLibro) {
for (Libri libro : elencoLibri) {
if (libro.getTitolo().equalsIgnoreCase(nomeLibro) && libro.isStato() == false) {
System.out.println(“Libro restituito”);
libro.setStato(true);
} else {
System.out.println(“Il libro è già disponibile”);
}
}
}}
Ora, tutto funziona abbastanza bene in linea generale, il mio problema sta nel metodo prestito() della classe Libri.
Quando arrivo a questa istruzione
super.libriAssegnati.add(titoloLibroDaPrestare);
mi aspetterei che aggiunga il titolo del libro appena inserito da tastiera all’ArrayList libriAssegnati della classe Utenti, ecco non riesco a capire il perchè l’array invece resta vuoto, quando richiamo infatti il metodo stampaElencoUtenti() della classe Utenti quando arriva al punto che deve stampare l’array libriAssegnati stampa l’array vuoto. Riesce ad indicarmi dove sto sbagliando?
Grazie.18 Febbraio 2022 alle 21:17 #5653adminAmministratore del forum::Ciao, è sbagliata l’impostazione del problema. Non devi usare l’ereditarietà. Una possibile soluzione è questa:
classe Libro:
https://pastebin.com/7wMJREhT
Classe Utente:
https://pastebin.com/DwNV5TAy
C’è bisogno anche di una classe libreria che unisce le classi viste sopra:
https://pastebin.com/8ZsbiEZ0
E infine la classe Test
https://pastebin.com/QpHSusunNon ho scritto il codice nei vari metodi cosi ti puoi esercitare, una volta che le classi sono suddivise bene.
19 Febbraio 2022 alle 01:55 #5656 -
AutorePost
- Devi essere connesso per rispondere a questo topic.