Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [JAVA] Inserimento dati da linea di comando

    Salve a tutti,
    sto studiando Java per un esame universitario e mi ritrovo un problema che non riesco a capire riguardo l'inserimento di input.
    codice:
    public class Libro{
    
    
    private static long counter = 1;
    private static long id;
       private final String titolo;
       private final Autore[] autori;
    private double prezzo;
       private String editore;
    
    
       public Libro(){
    
    
           this.id = counter++;
    
    
           Scanner in = new Scanner(System.in);
    
    
           System.out.println("Inserire il titolo del libro:");
           this.titolo = in.nextLine();
           System.out.println("Inserire il numero degli autori:");
           int n = in.nextInt();
           this.autori = new Autore[n];
           for(int i = 0; i < n; i++){
               System.out.println("Autore " + (i+1) +":");
               this.autori[i] = new Autore();
           }
    
    
           System.out.println("Inserire la Casa Editrice:");
           this.editore = in.nextLine();
           System.out.println("Inserire il prezzo del libro:");
           this.prezzo = in.nextDouble();
    
    
       }
    //....
    }
    
    //Metto per completezza la parte di interesse di della classe autore
    
    public class Autore{
    
    
       private final String nome;
       private final String cognome;
    
    
       public Autore(){
    
    
           Scanner in = new Scanner(System.in);
           System.out.println("Inserisci il nome dell' autore:");
           this.nome = in.nextLine();
           System.out.println("Inserisci il cognome dell'autore");
           this.cognome = in.nextLine();
    
       }
    }
    Appena arrivo al punto di inserire la casa editrice mi passa direttamente all'inserimento del prezzo; perch�?
    Nelle soluzioni del professore mette uno scanner per ogni tipo di dato, ma non riesco a motivarmelo.
    Inoltre se metto la chiusura degli scanner mi causa eccezione a run-time :/ .

    Spero nel vostro aiuto e nei vostri consigli.

    PS: mi scuso nel caso in cui ho fatto qualcosa che non andava fatto, poich�, anche se sono iscritto da un po', non utilizzavo pi� il forum

    --
    ciauz
    Ultima modifica di LeleFT; 24-08-2016 a 10:54 Motivo: Sistemato il codice

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,165
    Sposto nella sezione "Java".


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Sposto nella sezione "Java".


    Ciao.
    Grazie mille



    Quote Originariamente inviata da andbin Visualizza il messaggio
    Quando si è in un in.nextInt(); se l'utente inserisce es. 123<invio> il nextInt effettua il parsing del token e se è corretto (123 è corretto) lo restituisce. Ma il <invio> NON viene buttato via. Rimane bufferizzato e ancora da analizzare per Scanner. Ad un successivo nextLine(), Scanner "vede" una riga vuota, data appunto dal invio e quindi in effetti non chiede nulla.

    Questo NON è un "baco" di Scanner, è il suo funzionamento. Generalmente è bene evitare (o perlomeno fare attenzione) mix di nextLine con gli altri nextXYZ. Una soluzione è usare sempre nextLine() e poi convertire ciò che serve di diverso da String.


    P.S. A livello di "design delle classi", la classe Libro dovrebbe solo modellare un libro. NON dovrebbe fare alcun I/O verso l'utente e sicuramente NON nel costruttore.
    Grazie mille per le tue le tue delucidazioni, risolverò il problema al più presto (magari facendo "mangiare" l'<invio> a qualche variabile).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.