Salve,
desideravo avere dei chiarimenti circa le varie possibilità di input disponibili in Java. Tuttavia fra quelle disponibili ( e a me note - se ve ne sono altre di vantaggiose vi invito caldamente a farmelo presente) vorrei approfondire:
BufferedReader, InputStreamReader, Scanner.
Solitamente uso, per formazione scolastica, il BufferedReader in questo modo:
Scanner invece:
I miei dubbi sono i seguenti:
1. Un oggetto BufferedReader ha un buffer maggiore rispetto ad uno di tipo Scanner, di conseguenza per immagazzinare stringhe di notevoli dimensioni è poco conveniente quest'ultimo. Tuttavia Scanner mi permette di prelevare solo ciò che io desidero da un buffer (eg. nextInt() ).
Posso fare qualcosa del genere con un oggetto BufferedReader?
2. L'uso del BufferedReader richiede (necessariamente da quanto ho capito) il costrutto try-catch per gestire le eccezioni. È decisamente comoda come cosa, ma non posso applicare la stessa cosa a Scanner ed appianare questa differenza?
3. Date uno sguardo al seguente codice. Quali sono le differenze fra questo codice e il primo da me postato ( l'esempio del BufferedReader):
Ormai dovrebbe essere chiaro. Il mio obiettivo è capire quale dei due metodi di inserimento dati è preferibile utilizzare a seconda delle situazioni e se in alcuni non vi sono differenze sostanziali.
Grazie anticipatamente
desideravo avere dei chiarimenti circa le varie possibilità di input disponibili in Java. Tuttavia fra quelle disponibili ( e a me note - se ve ne sono altre di vantaggiose vi invito caldamente a farmelo presente) vorrei approfondire:
BufferedReader, InputStreamReader, Scanner.
Solitamente uso, per formazione scolastica, il BufferedReader in questo modo:
Java:
// simulo un metodo per un inserimento di dati
public void inserimentoDati()
{
BufferedReader tastiera = new BufferedReader (new InputStreamReader(System.in));
try {
int a = Integer.parseInt(tastiera.readLine());
String a = tastiera.getLine();
}
catch (Exception e)
{
System.out.println("Errore.");
}
}
Java:
public void inserimentoDati()
{
Scanner sc= new Scanner(System.in);
int i= scan.nextInt();
String varString = scan.nextLine();
}
I miei dubbi sono i seguenti:
1. Un oggetto BufferedReader ha un buffer maggiore rispetto ad uno di tipo Scanner, di conseguenza per immagazzinare stringhe di notevoli dimensioni è poco conveniente quest'ultimo. Tuttavia Scanner mi permette di prelevare solo ciò che io desidero da un buffer (eg. nextInt() ).
Posso fare qualcosa del genere con un oggetto BufferedReader?
2. L'uso del BufferedReader richiede (necessariamente da quanto ho capito) il costrutto try-catch per gestire le eccezioni. È decisamente comoda come cosa, ma non posso applicare la stessa cosa a Scanner ed appianare questa differenza?
3. Date uno sguardo al seguente codice. Quali sono le differenze fra questo codice e il primo da me postato ( l'esempio del BufferedReader):
Java:
String rigaLetta = "";
InputStreamReader tastiera = new InputStreamReader(System.in);
BufferedReader bufferTastiera = new BufferedReader(tastiera);
try
{
rigaLetta = bufferTastiera.readLine();
}
catch (IOException e)
{
e.printStackTrace();
}
Ormai dovrebbe essere chiaro. Il mio obiettivo è capire quale dei due metodi di inserimento dati è preferibile utilizzare a seconda delle situazioni e se in alcuni non vi sono differenze sostanziali.
Grazie anticipatamente