Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    11

    [JAVA] Trovare il maggiore tra interi

    Ciao a tutti,
    stavo giochicchiando un po con java.
    Ho un piccolo problema, vi spiego la situazione:
    Devo leggere da un file che contiene interi e trovare l'intero con il valore maggiore, Non so quanti valori sono presenti all'interno del file questo è il codice:

    codice:
    import java.io.*;
    //import java.Integer.*;
    
    class leggoFile {
      public static void main(String args[])
      throws IOException {
        FileReader fr;
        //imposto Il file da leggere
        fr=new FileReader("FileDaLeggere/FileDaLeggere.txt");
        BufferedReader br;
        br=new BufferedReader(fr);
        String s;
            s=br.readLine();
            //Verifico che il file non sia vuoto
            if (s==null){
                System.out.println("None");
            } else{
                //Nel caso in cui il file non sia vuoto mi stampo la lista dei valori
                        System.out.println("La lista dei valori in input e' : ");
                    
                while(true) {
                    s=br.readLine();
                if(s==null)
                    break;
                        System.out.println(s);
                        //System.out.println(" Il valore maggiore è:"
                }
                //Trovare il valore massimo degli interi inseriti all'interno del file
                //effettuo il cast da Stringa ad intero
                //int intero = Integer.parseInt(s);
             }
            }
    }
    Sino ad ora leggo il file, verifico che il file non sia vuoto e se non è vuoto mi stampo i valori presenti.

    Adesso come faccio a fare un confronto e a trovare il valore maggiore?
    Grazie in anticipo a chiunque mi dia una mano

  2. #2
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Ciao, per prima cosa puoi memorizzare tutti i valori in un ArrayList. Poi un approccio standard per questo tipo di problemi è il seguente. Dichiari una variabile come
    codice:
    int maxVal;
    e la poni uguale al primo valore letto. Poi passi al secondo: se questo è maggiore di maxVal allora aggiorni maxVal, altrimenti passi al terzo e ripeti il controllo. Praticamente ogni volta vedi se hai trovato un valore maggiore di maxVal: se sì lo sostituisci, altrimenti prosegui. Alla fine maxVal conterrà il valore massimo.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Come è strutturato il file?Cioè i numeri come sono disposti nel file?
    Un numero per ogni riga..c'è uno spazio tra ogni numero..come?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    11
    Grazie a tutti per le risposte
    Come è strutturato il file?Cioè i numeri come sono disposti nel file?
    Un numero per ogni riga..c'è uno spazio tra ogni numero..come?
    Il file è composto in questo modo
    1
    21
    43
    65
    332
    54
    321
    786
    32
    43
    54


    Ciao, per prima cosa puoi memorizzare tutti i valori in un ArrayList
    devo vedere come funziona

    Praticamente la logica è:
    Metto i valori dentro un ArrayList, memorizzo il primo valore dentro la variabile(devo effettuare il cast da String a int?) e uso il metodo iterator per scrollare i valori ed effettuo il controllo su ogni valore, se il valore memorizzato in maxVal è maggiore lo lascio se è minore lo aggiorno.
    Sbaglio?
    Ok come si fa?

  5. #5
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Prova a guardare questo esempio che ho buttato giù:
    codice:
    public class InteroMaggiore {
    	
    	public static void main(String[] args) {
    		ArrayList<Integer> lista = new ArrayList<Integer>();
    		lista.add(2);
    		lista.add(4);
    		lista.add(3);
    		lista.add(6);
    		lista.add(5);
    		lista.add(1);
    		
    		int maxVal = lista.get(0);
    		
    		for(int i=0; i<lista.size(); i++) {
    			if(lista.get(i) > maxVal) maxVal = lista.get(i);
    		}
    		
    		System.out.println("Il numero maggiore è "+maxVal);
    	}
    
    
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Be' in realtà per come è strutturato il file potresti allo stesso tempo ottenere, stampare e determinare il massimo senza la necessità di salvare tutti i numeri in una lista come ti è stato suggerito.
    La procedura in pratica sarebbe questa:
    poichè vi è un numero per ogni riga, leggi il contenuto del file riga per riga, converti ciascuna riga nel corrispondente int,stampi l'intero ottenuto ,confronti l'intero corrente con l'intero "massimo" di cui terrai traccia in una variabile (se corrente > massimo -> massimo = corrente) e alla fine stamperai il numero massimo trovato..


  7. #7
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Certo, con questa procedura eviti il salvataggio. Se per qualche altro motivo (dato che non credo che lo scopo del software sia limitato a questo) ti dovesse servire tenere traccia dei numeri che leggi puoi fare come abbiamo visto.

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    11
    Quote Originariamente inviata da minomic Visualizza il messaggio
    Certo, con questa procedura eviti il salvataggio. Se per qualche altro motivo (dato che non credo che lo scopo del software sia limitato a questo) ti dovesse servire tenere traccia dei numeri che leggi puoi fare come abbiamo visto.
    Innanzi tutto grazie,
    allora ho utilizzato l'arrayList
    codice:
    ArrayList lista = new ArrayList();    // creo il contenitore che conterrà i valori letti dal file
        int maxVal;    // creo la variabile che va a memorizzare il valore massimo
                System.out.println("La dimensione iniziale dell'ArrayList e' "+lista.size());    //DEBUG
    e fino a qua ok

    Poi gli ho dato in pasto la variabile s di tipo String (dove memorizzo i dati letti dal file)

    ma la risposta è questa
    outputProg.JPG
    io mi aspettavo di avere un numero uguale agli elementi contenuti nel file

    Il null finale invece è dovuto a System.out.println(lista); credevo che mi stampasse i contenuto dell'array

    codice:
    lista.add(s);
      System.out.println("La dimensione attuale dell'ArrayList e' "+lista.size());    //DEBUG
      System.out.println(lista);

  9. #9
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Non devi inserire nell'ArrayList la stringa contenente TUTTI gli interi. Ogni volta che leggi una riga devi convertire la stringa letta in un intero e inserire questo intero nella lista, POI passi al successivo. Se guardi l'esempio che ti avevo postato vedi che c'erano tanti add e non uno solo.

  10. #10
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Ti posto un esempio (l'ho scritto un po' in fretta, quindi probabilmente è migliorabile).
    codice:
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    
    
    public class InteroMaggiore {
    
    
    	public static void main(String[] args) {
    		ArrayList<Integer> lista = new ArrayList<Integer>();
    		String s;
    
    
    		try {
    			FileReader fr = new FileReader("numeri.txt");
    			BufferedReader br = new BufferedReader(fr);
    
    
    			while((s=br.readLine()) != null) {
    				lista.add(Integer.parseInt(s));
    			}
    
    
    			br.close();
    
    
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    
    
    		int maxVal = lista.get(0);
    
    
    		for(int i=0; i<lista.size(); i++) {
    			if(lista.get(i) > maxVal) maxVal = lista.get(i);
    		}
    
    
    		System.out.println("Il numero maggiore è "+maxVal);
    	}
    
    
    }

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.