Ciao a tutti vi 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:

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");
    }
}
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. Inoltre mi servirebbe come scritto nelle specifiche anche il dislivello massimo e l'altezza massima raggiunta.

Grazie in anticipo per le risposte, un saluto .