Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232

    modificare file.txt

    sto studiando da poco gli input/output da tastiera e da file. Dovrei fare un input da file in cui nel miofile.txt ho sia numeri e nomi ad esempio:

    14554 nomepippopippo 00
    555nomepippo
    nomepluto 000

    dovrei riuscore a ottenere un file out.txt in cui ho solo i nome e senza spazi ulteriori tipo:

    nomepippopippo
    nomepippo
    nomepluto

    come posso fare una cosa del genere? Io fin ora ho usato il pakage java.io usando le classi riguardanti gli inputi stream e file reader cose del genere.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    la via più semplice è:

    1. leggi da un file di input
    2. togli quello che non ti interessa
    3. scrivi su un altro file di output

    ottimizzazioni possono essere fatte, ma l'idea di base è questa
    RTFM Read That F*** Manual!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232
    ok grazie ma per togliere quello che non mi serve come faccio?? mi devo decumentare solo su java.io?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    leggi bene, non lavori mai direttamente sul file (a meno che non sei costretto)

    1. leggi da un file di input significa leggi e carica in memoria una riga o tutto il file, fai te
    2. usi i metodi di String per togliere quello che nno ti interessa
    3. scrivi il risultato sul file di output
    RTFM Read That F*** Manual!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232
    stavo provando a fare una cosa del genere prendo in input un BufferedReader per leggere un file in cui ho: nella prima riga il numero delle righe presenti nel file, e dopo una serie di numeri.Ad esempio
    codice:
    3
    12 5 1 7 3 9 23 43 21 12 11 5 14
    8 42 20 76 2 10 14 22 8
    10 2 33 42 8 9 65 37 2 88 21
    in output devo avere un file in cui ho 1 se i prodotti sn dispari 0 altrimenti.
    non capisco dove sbaglio, credo il problema sia nella chiusura dello stream

    codice:
    	public static int [] array (BufferedReader a) throws IOException {
    		
    		int [] data = new int[a.read()];
    			
    			for(int i = 0; i<data.length; i++) {
    				
    				data[i] = a.read();
    				
    				
    				
    			}
    		
    		return data;
    		
    	}
    	
    	public static boolean controlla(int data[]) {
    		
    		for(int i = 0; i<data.length; i++) {
    			
    			for(int j = i+1; j<data.length-1; j++) {
    				
    				int c = data[i]*data[j];
    				if(c%2!=0) return true;
    			}
    		}
    		return false;
    	}
    	
    	
    	
    	public static void main(String[] args) {
    		
    		
    		try {
    			
    			BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
    			BufferedWriter out =    new BufferedWriter(new FileWriter("output.txt"));
    		
    			int b = reader.read();
    					
    			for(int x = 0; x <b; x++) {
    				
    				int [] data =array(reader);
    				
    					if(controlla(data)==true) {
    						
    						out.write(1);
    						
    						
    					}
    					
    					else {
    						
    						out.write(0);
    						
    					}
    					
    			}
    			
    			out.close();
    			
    		}
    		
    		catch(IOException e) {
    			e.printStackTrace();
    		}
    
    	}

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232
    ho capito che devo usare StringTokenizer e i metodi hasMoretoken nexttoken..ma non so come fare...qualche consiglio???

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    perchè tutti (non solo tu) avete l'abitudine di complicarvi la vita!!!
    Allora, leggi riga per riga da un file.
    Quella riga che hai letto è una stringa che contiene caratteri blank se vuoi, ma cmq una stringa. Una soluzione ottimizzata in assoluto non esiste, al massimo sai che ad ogni spazio corrisponde un numero (es. il primo blank ce l'hai a 12, il secondo dopo 5 ecc).

    Codice PHP:
    string string.trim(); 
    int ret string.indexOf(" "); 
    int index 0
    while (
    ret 0){
        
    index++;
      
    ret string.indexOf(" "index );
      } 
    alla fine trovo sia leggermente (non so di quanto) migliore dell'andarsi a creare per ogni riga del file un array di stringhe (quello che fa il tokenizer) solo per sapere quante sono (senza cioè guardare al contenuto).

    finito quel ciclo scrivi l'output
    RTFM Read That F*** Manual!!!

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.