Ho questo esercizio:
"Sia dato un file di input contenente un insieme di numeri interi. Ogni numero
occupa una riga del file ed č costituito da non pių di 500 cifre.
Scrivere un programma Java che prenda in input tale file e scriva in un file di
output il pių grande tra i numeri individuati."
Ora il problema č che il file contiene righe con numeri pių grandi di int long e qualunque altro tipo primitivo, ho pensato di confrontarli come stringhe, il fatto č che dovrei inserirli in un array di stringhe, ma dovrei leggere una volta il file per sapere il numero di righe, e poi leggerlo una seconda volta per memorizzare le stringhe. Mi chiedevo come fare per evitare di leggere pių volte un file, ho letto del metodo mark() della classe BufferedReader, ma non mi funziona, mi viene sempre invalidata la marcatura,vi posto il mio codice e vi chiederei di spiegarmi come usare questo metodo o risolvere il problema eventualmente.
codice:import java.io.*; public class EsercizioVI { public static void main(String [] args) throws IOException { FileReader reader=null; PrintWriter out=null; BufferedReader in=null; try{ reader=new FileReader("input.txt"); in=new BufferedReader(reader); out=new PrintWriter("OUTPUT.txt"); int righe=0; String max=""; in.mark(0); //inizializzo mark a 0 per ricominciare da 0 la lettura while(in.readLine()!=null){ righe++; } in.reset(); //resetto per potere rileggere String [] str=new String[righe]; for(int i=0; i<str.length; i++) //assegno ai vari elementi dell'array le stringhe str[i]=in.readLine(); max=str[0]; for(int i=0; i<str.length-1; i++) { for(int j=i+1; j<str.length; j++) { if(max.length()<str[j].length()) //confronto i numeri tramite lunghezza delle stringhe. max=str[j]; if(max.length()==str[j].length()) { int cont=0; boolean uguali=true; while(uguali==true) { if(max.charAt(cont)>str[j].charAt(cont)) //se le stringhe hanno la stessa lunghezza tramite charAt vedo quale ha un numero maggiore. uguali=false; if(max.charAt(cont)<str[j].charAt(cont)) { uguali=false; max=str[j]; } cont++; } } } } out.print(max); }

Rispondi quotando