Esercizio Java/problema lettura

di il
7 risposte

Esercizio Java/problema lettura

Salve a tutti, premetto che sono alle prime armi con Java, sto riscontrando una difficoltà nel finire questo esercizio.
Ho creato un menu, in base alla scelta fatta dall' utente , il menu compie un ' azione.Premendo 4 dal menu, l utente dovrebbe inserire il Titolo di un libro e se quel titolo è presente dovrebbe permettermi di modificarne l' autore, ma non ne vengo a capo. Cosa sbaglio? Grazie a chi mi aiuterà.
Vi posto la classe Libreria ed il Main

public class Libreria {



public Libreria() {
libreria = new ArrayList<Libro>();

}

public boolean modificaLibro(String nuovoAutore) {
Iterator<Libro> itr = libreria.iterator();
while (itr.hasNext()) {
Libro temp = itr.next();

Libro Titolo = null;
if (temp.getTitolo().equals(Titolo)){

temp.setAutore(nuovoAutore);
return true;


Ovviamente ho saltato delle parti che servono per le altre funzioni, questa è la classe Libreria.


Questo il main
System.out.println(libreria.modificaLibro(choice));


String nuovoAutore = "";
System.out.println("Inserisci il nuovo autore: " + nuovoAutore);
choice = choose.nextLine();

7 Risposte

  • Re: Esercizio Java/problema lettura

    mimmoner ha scritto:


    l utente dovrebbe inserire il Titolo di un libro e se quel titolo è presente dovrebbe permettermi di modificarne l' autore, ma non ne vengo a capo. Cosa sbaglio?
              Libro Titolo = null;
    		if (temp.getTitolo().equals(Titolo)){
    Beh, Titolo è fisso a null ... come/da dove intendevi passare il titolo??

    E comunque no, non va granché bene. Se Libreria è solo la classe che gestisce a livello "logico" un elenco di libri e NON contiene altro (come è giusto che sia) tipo input/output verso l'utente, allora invece di mettere un modificaLibro, puoi mettere un metodo es.

    public Libro trovaLibroPerTitolo(String titolo)

    Sarà il chiamante quindi a trovare un libro specifico e poi cambiarne le proprietà (es. l'autore) in base alle richieste dell'utente.
  • Re: Esercizio Java/problema lettura

    Grazie, in effetti sbagliavo proprio quello. Ho modificato così, adesso mi toglie l autore però me lo da vuoto
    Scusami faccio un copia&incolla perchè non so come prendere il codice e passarlo qui.

    public boolean modificaLibro( String titolo) {
    Iterator<Libro> itr = libreria.iterator();
    while (itr.hasNext()) {
    Libro temp = itr.next();
    if (temp.getTitolo().equals(titolo)){

    String autore = "";
    temp.setAutore(autore);

    return true;
  • Re: Esercizio Java/problema lettura

    mimmoner ha scritto:


    adesso mi toglie l autore però me lo da vuoto
    Hai messo

    String autore = "";

    Scusa ma ... cosa ti aspettavi? Da dove vuoi che arrivi l'autore?

    L'unica cosa sensata sarebbe passare entrambi:
    public boolean modificaLibro(String titolo, String nuovoAutore) {
       .....

    Quello che ti ho detto io cioè un

    public Libro trovaLibroPerTitolo(String titolo)

    sarebbe più semplice e più generico.
  • Re: Esercizio Java/problema lettura

    Grazie mille, provo cosi.
  • Re: Esercizio Java/problema lettura

    Sempre in merito a questo esercizio, non riesco a far memorizzare alle variabili il valore inserito in input dall' utente perchè?
    Dovrei inserire un metodo di aggiuntaLibro?
    Questa è la parte di codice, dove choose è lo Scanner.
    Grazie a chi risponderà.

    String nuovoAutore = choose.nextLine();
    String nuovoAnno = choose.nextLine();
    System.out.println(libreria.trovaLibro(choice, nuovoAutore, nuovoAnno));
    choice = choose.nextLine();


    System.out.println("Inserisci il nuovo autore:" + nuovoAutore);
    choice = choose.nextLine();
  • Re: Esercizio Java/problema lettura

    mimmoner ha scritto:


    Sempre in merito a questo esercizio, non riesco a far memorizzare alle variabili il valore inserito in input dall' utente perchè?
    Dovrei inserire un metodo di aggiuntaLibro?
    Questa è la parte di codice, dove choose è lo Scanner.
    Grazie a chi risponderà.

    String nuovoAutore = choose.nextLine();
    String nuovoAnno = choose.nextLine();
    System.out.println(libreria.trovaLibro(choice, nuovoAutore, nuovoAnno));
    choice = choose.nextLine();


    System.out.println("Inserisci il nuovo autore:" + nuovoAutore);
    choice = choose.nextLine();
    Dal codice inserito non si riesce a dire molto...
    Descrivi meglio il problema, e magari posta più codice e l'output di un programma di test, se il risultato che ottieni non è quello che ti aspetti.
  • Re: Esercizio Java/problema lettura

    Si scusami, allora ho un arraylist di libri, io devo far si che l' utente possa modificare l' autore e l' anno di un libro che, trovandolo tramite titolo, si trova dentro quest' arraylist. Il libro lo trovo con il metodo trovaLibroPerTitolo, dopo ho fatto un setAutore e setAnno per inserire i nuovi campi, ma nel momento in cui l' utente mi scrive il nuovo autore e il nuovo anno in output mi stampa i campi vuoti.

    Questa è la parte del codice che si trova dentro la classe Libreria:
    public boolean trovaLibro(String titolo, String nuovoAutore, String nuovoAnno) {
    Iterator<Libro> itr = libreria.iterator();
    while (itr.hasNext()) {
    Libro temp = itr.next();
    if (temp.getTitolo().equals(titolo)) {
    temp.setAutore(nuovoAutore);
    temp.setAnno(nuovoAnno);


    Questa quella del main.
    String nuovoAutore = choose.nextLine();
    String nuovoAnno = choose.nextLine();
    System.out.println(libreria.trovaLibro(choice, nuovoAutore, nuovoAnno));
    choice = choose.nextLine();


    System.out.println("Inserisci il nuovo autore:" + nuovoAutore);
    choice = choose.nextLine();

    System.out.println("Inserisci il nuovo anno:" + nuovoAnno);
    choice = choose.nextLine();

    }
Devi accedere o registrarti per scrivere nel forum
7 risposte