Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Esercizio sulla ricorsione

    "Si realizzi un programma Java che preso in input un file contenente una sequenza
    di stringhe, una per riga, e scriva in un file di output la medesima sequenza di input
    in cui le stringhe appaiano invertite.
    Utilizzare una funzione ricorsiva per l'inversione delle stringhe."

    Io ho scritto un codice che in teoria dovrebbe funzionare al 90%

    codice:
    import java.io.*;
    
    public class Esercizio1
    {
    	public static void main(String []args) throws IOException
    	{
    		FileReader filereader=null;
    		BufferedReader reader=null;
    		PrintWriter out=null;
    		
    		try{
    			filereader=new FileReader("input.txt");
    			reader=new BufferedReader(filereader);
    			out=new PrintWriter("OUTPUT.txt");
    		
    			String s="";
    			String output="";
    			
    			while(reader!=null)
    			{
    				s=reader.readLine();
    				int i=s.length()-2;
    				inverti(s,output,i);
    				out.print(output);
    			}
    			
    			}
    	
    			
    			catch(FileNotFoundException e)
    			{
    				System.out.println("File non trovato");
    		
    			}
    			
    			catch(NullPointerException e)
    			{
    			}
    			
    			
    			finally{
    				if(filereader!=null)
    					filereader.close();
    				if(reader!=null) reader.close();
    				if(out!=null) out.close();
    				}
    	}
    			
    			
    		public static String inverti(String s, String output, int i)
    		{
    				if(i<0) {
    				      output=output+';';
    				      return output;}
    			
    			      else if(i>=0)
    			      {
    				      output+=s.charAt(i);
    					i--;}
    			      return inverti(s,output,i);
    			    
    		}
    	
    }
    Il problema č che cosģ facendo l'output č vuoto, l'unica cosa che mi viene da pensare č che una volta uscito dal metodo e restituita la stringa si perda il valore, ma com'č possibile?
    Se l'output lo sto salvando in una stringa output dichiarata all'inizio com'č che ritorna vuota!!! Il metodo fa quello che deve fare e resttuisce la stringa, ma perchč si perde il valore?
    Anche se la salvo in un'altra variabile si perde....

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Se il tuo metodo restituisce una stringa, andrą richiamato in modo diverso da un metodo void...

    codice:
    main() {
       // Cosģ si richiama un metodo void
       chiamaMetodo( ... );
    
       // cosģ si richiama un metodo che ritorna una stringa
       String valoreDiRitorno = metodoCheTornaString( ... );
    }
    Tu stai chiamando il metodo "inverti" come se fosse void... in pratica il valore di ritorno lo butti via.


    Ciao.
    "Perchč spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Tu stai chiamando il metodo "inverti" come se fosse void... in pratica il valore di ritorno lo butti via.
    Azz...dimenticavo, adesso funziona, ti ringrazio.

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.