Libreria

  • Questo topic ha 2 risposte, 1 partecipante ed è stato aggiornato l'ultima volta 2 anni, 10 mesi fa da Alex.
Stai visualizzando 3 post - dal 1 a 3 (di 3 totali)
  • Autore
    Post
  • #5651
    Alex
    Ospite
    Up
    1
    Down
    ::

    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.

    #5653
    admin
    Amministratore del forum
    Up
    0
    Down
    ::

    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/QpHSusun

    Non ho scritto il codice nei vari metodi cosi ti puoi esercitare, una volta che le classi sono suddivise bene.

    #5656
    Alex
    Ospite
    Up
    0
    Down
    ::

    Grazie ci lavorerò subito

Stai visualizzando 3 post - dal 1 a 3 (di 3 totali)
  • Devi essere connesso per rispondere a questo topic.