|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
java, leggre da un file ed eseguire operazioni
un amico mi ha chiesto se posso fargli un esercizio in java che gli serve per la scuola, ma purtroppo sono a digiuno di programmazione in java, potete per favore aiutarmi voi!!!
l'esercizio consiste nel dover leggere da un file esempio.txt contenuto in c:\Documenti le prime due righe e sommare alla prima dieci e alla seconda moltiplicare 5 visualizzando poi i risultati a video esempio.txt 0.002 1.6 19 2.25 25 grazie!!!
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
|
Ciao!
Beh, è abbastanza banale come esercizio... Devi avere comunque un po' di dimestichezza con gli stream, e con l' I/O su file. Ecco comunque la soluzione: Codice:
import java.io.*;
public class Esercizio {
public static void main(String[] args) throws IOException{
File f = new File("C:\\Documenti\\esempio.txt");
FileInputStream fs = new FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fs);
BufferedReader filein = new BufferedReader(isr);
float a = Float.parseFloat(filein.readLine()); // leggo il primo numero prima riga
float b = Float.parseFloat(filein.readLine()); // leggo il secondo numero seconda riga
float risultato1 = a + 10;
float risultato2 = b * 5;
System.out.println("Risultato 1: " + risultato1 + "\n" + "Risultato 2: " + risultato2);
System.exit(0);
}
}
Ciao. PS: ma il tuo amico come ha potuto darti da fare un esercizio del genere se sei a digiuno di programmazione? |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Mar 2003
Messaggi: 3852
|
Quote:
__________________
Cerco fotocamera con buono zoom!! CLICCA! ° Moderatore del Forum Ufficiale di ElaborarE (responsabile sezione HI-FI e Car Audio) ° |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
grazie mille fbcyborg!!!
il motivo per cui si è rivolto a me e perchè ho studiato il linguaggio C (infatti nel messaggio avevo precisato che sono a digiuno di "programmazione in java" ) e quindi pensava che non mi sarebbe stato difficile farglielo, ma purtroppo non conoscendo nulla del linguaggio java e servendogli in tempi brevi ho pensato di chiedere aiuto... grazie ancora, ciao |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
|
Quote:
E per la lettura da file, utilizza gli stream! Sono ottimi anche per l'integrazione con un programma che lavora in una rete di calcolatori. |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
nel caso il file esempio.txt contenga righe vuote come bisogna modificare il codice per non avere errori?
esempio.txt 0.002 1.6 19 2.25 25 grazie!!!
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Ad esempio:
Codice:
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Throwable {
Scanner in = new Scanner(new File(args[0]));
in.useLocale(Locale.US);
while(in.hasNextFloat()) {
System.out.println(in.nextFloat());
}
}
}
0.0020 1.6 19.0 2.25 25.0
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
Quote:
ma se volessi utilizzare il vecchio codice c'è un modo per saltare le righe vuote, inoltre come impostare nel tuo codice la lettura automatica del file c:\documenti\esempio.txt grazie |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Prendi una riga alla volta, verifichi se la sua lunghezza è maggiore di zero. Se è zero allora la riga non contiene caratteri.
Codice:
for(String line = fileIn.readLine(); line != null; line = fileIn.readLine()) {
if(line.length() > 0) {
float x = Float.parseFloat(line);
}
}
Scanner in = new Scanner(new File(args[0])); tu scriveresti: Scanner in = new Scanner(new File("c:\\documenti\\esempio.txt"));
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
ma perchè hai utilizzato Locale.US e non ITALY, perchè i numeri utilizzano il punto?
grazie!!! |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Sì, per via del punto. A dirla tutta che io sappia anche in italia si usa il punto per separare i decimali dal resto (sicuramente lo si fa in notazione valutaria) ma si vede che pensavo male
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
nel caso dell'euro però usiamo la virgola
ma integrando il codice for(String line = fileIn.readLine(); line != null; line = fileIn.readLine()) { if(line.length() > 0) { float x = Float.parseFloat(line); } } poi posso eseguire sempre le operazioni? |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Puoi fare tutto quello che ti viene in mente. Il problema è quasi sempre il come.
Ad esempio se l'esercizio dice di sommare al primo valore 10 e moltiplicare il secondo per 5 allora risolvi la cosa con un boolean. Codice:
float primoNumero = 0;
float secondoNumero = 0;
boolean interruttore = false;
legge una riga
se la riga non è vuota e (interruttore == false)
primoNumero = Float.parseFloat(riga);
interruttore = true;
altrimenti se la riga non è vuota e (interruttore == true)
secondoNumero = Float.parseFloat(riga);
break;//esce dal ciclo di lettura
primoNumero += 10;
secondoNumero *= 5;
Se invece devi esaminare i valori a coppie finchè non hai finito di leggere il file allora la cosa è un pelo diversa. Non molto ma un po' sì.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
dovrei leggere tutto, applicando poi operazioni diverse ai 5 numeri!!!
grazie!!!
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
(A)Se sai già quanti numeri troverai nel file, che siano cinque, sette o due, è un conto. (B)Se invece l'esercizio dice che non è nota la quantità di numeri, è un altro.
A o B ?
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
|
Per rilevare una riga vuota fra due valori basta intercettare il carattere speciale '\n' che equivale ad un "a capo". Metti un if che fa il controllo dello \n e se è un a capo salta e legge la prossima riga, altrimenti il file è finito e readLine() restituisce null.
Chiaramente per fare ciò è opportuno utilizzare un ciclo while correttamente. es.: String line = in.readLine(); Codice:
while(line!=null){
if (line.equals("\n"))
line=in.readLine();
operazione sulla stringa
line = in.readLine();
}
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Secondo la documentazione il metodo readLine di BufferedReader scarta il carattere \n
"A String containing the contents of the line, not including any line-termination characters" il controllo if(line.equals("\n")) potrebbe non dare i risultati sperati.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Jul 2005
Messaggi: 584
|
i numeri da leggere sono 5 ...
grazie a tutti!!! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:52.












) e quindi pensava che non mi sarebbe stato difficile farglielo, ma purtroppo non conoscendo nulla del linguaggio java e servendogli in tempi brevi ho pensato di chiedere aiuto... 








