Ciao a tuttivi spiego il mio problema: il mio algoritmo dovrebbe prendere in input un file .txt composto da N righe di interi; la prima riga contiene il numero dei valori successivi. La quota di partenza è 5000 e ogni riga (esclusa la prima) corrisponde a una variazione sulla quota (sia essa positiva che negativa). Il mio obiettivo è calcolare il dislivello massimo (il numero più alto tra la sequenza di interi), calcolare la quota massima raggiunta e infine stampare su un file di output (.txt) la quota più frequentemente rilevata. Mi spiego meglio: mi trovo a 5000 all'inizio, se nella seconda riga trovo 2 -> 5002 , terza riga 4 -> 5006, quarta riga -4 -> 5002; a questo punto la quota più frequentemente rilevata sarebbe 5002. Questo è il codice che ho realizzato:
Avevo pensato di inserire la somma algebrica per ogni riga in un array e poi contare le occorrenze con un for, io però non sono riuscito a risolvere tutte le cose, solo a stampare la somma algebrica poiché non sono riuscito a mettere ogni volta il risultato della somma nell'array.codice:import java.io.*; import java.util.Scanner; public class Messner { public static void main(String[] args){ int quotaPart = 5000; // inizializzo la quota di partenza a 5000 metri String line = null; // la stringa line verrà usata per indicare la stringa corrispondente nel file Scanner sc = new Scanner(System.in); // creo l'oggetto sc che rappresenta la tastiera System.out.println("Inserire percorso file di input" + ""); // inserisco percorso file di input String percorsoinput = sc.nextLine(); // assegno a percorso input il percorso immesso tramite tastiera grazie al metodo nextLine() dello classe scanner try { BufferedReader in = new BufferedReader(new FileReader(percorsoinput)); LineNumberReader lnr = new LineNumberReader (in); // per indicare il numero della riga creo un oggetto line = in.readLine(); while ((line = lnr.readLine ()) != null){ // creo un ciclo while per sommare le misurazioni contenute // nel file di input // // se non è possibile convertire la stringa line in // intero viene lanciata un'eccezione // NumberFormatException (catturata sotto con catch // apposito) // // uso un if per partire dalla seconda riga // in quanto la prima indica il numero delle misurazioni e // non una misurazione vera e propria if (lnr.getLineNumber () == 1) quotaPart=5000; int numero = Integer.parseInt(line); // converto la stringa letta dal file in intero quotaPart += numero; arrayQuote[0]=quotaPart; line = in.readLine(); } in.close(); System.out.println("Inserire percorso file di output" + ""); // inserisco il percorso del file di output String percorsoutput = sc.nextLine(); // assegno a percorso output il percorso immesso tramite tastiera grazie al metodo nextLine() dello classe scanner File file = new File(percorsoutput); // creo un file che ha come destinazione il percorso inserito FileWriter fw = new FileWriter(file); // creo un oggetto per scrivere nel file String s = Integer.toString (quotaPart); // converto il parametro somma in stringa poiché il metodo vuole una stringa scritta nel file fw.write(s); // scrivo nel file il risultato delle misurazioni fw.close(); // gestisco le varie eccezioni che posso incontrare con diversi catch } catch(FileNotFoundException e) { System.out.println(percorsoinput +"File non trovato"); } catch(NumberFormatException e) { System.out.println("Linea non corretta: -> "+line+" <-"); } catch(IOException e) { System.out.println("IOException "+e); } System.out.println("Dislivello calcolato e scritto nel file scelto come destinazione"); } }Inoltre mi servirebbe come scritto nelle specifiche anche il dislivello massimo e l'altezza massima raggiunta.
Grazie in anticipo per le risposte, un saluto.