ArrayList<String> stampa inversa

di il
3 risposte

ArrayList<String> stampa inversa

Sto provando a risolvere questo esercizio con il codice che vi propongo sotto, ma non credo sia corretto, avete suggerimenti?

ESERCIZIO:

Si consideri la classe:
public class Capitolo11
{
public static void main (String[] args){
String b= "Tanto va la gatta al lardo che ci lascia
lo zampino!";
inverso(b);
}
Scrivere il metodo void inverso(String s) che, data una stringa in ingresso, crea un ArrayList contenente tutti i caratteri della stringa e, tramite un foreach, li stampa al contrario restituendo un output come il seguente:
“!onipmaz ol aicsal ic ehc odral la attag al av tonat”

2) Ripetere l’esercizio precedente utilizzando un Iterator.


SOLUZIONE 1
public class Main {
 public static void main(String a[]){
    ListIterator<String> s1 = null;
    List<String> s = new ArrayList<String>();
    s.add("t");
    s.add("a");
    s.add("n");
    s.add("t");
    s.add("o");
    s.add(" ");
    s.add("v");
    s.add("a");
    //etc..
    
    
    //iterator
    s1=s.listIterator();
 
    System.out.println("normale");
    while(s1.hasNext()){
       System.out.println(s1.next());
    }
    System.out.println("inverso");
    while(s1.hasPrevious()){
       System.out.println(s1.previous());
    
  }
 
 }
} 

SOLUZIONE 2

public class Main {
 public static void main(String a[]){
    ListIterator<String> s1 = null;
    List<String> s = new ArrayList<String>();
    s.add("t");
    s.add("a");
    s.add("n");
    s.add("t");
    s.add("o");
    s.add(" ");
    s.add("v");
    
//     //iterator
//    s1=s.listIterator();
// 
//    System.out.println("normale");
//    while(s1.hasNext()){
//       System.out.println(s1.next());
//    }
//    System.out.println("inverso");
//    while(s1.hasPrevious()){
//       System.out.println(s1.previous());
//    
//  }
   
 for(String obj:s)  
    System.out.println(obj); 
 }
} 
SOLUZIONE 1B

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String s = "Tanto va la gatta al lardo che ci lascia lo zampino!";
        char s1;
        
        for (int i = s.length()-1;i>=0; i--){
        s1= s.charAt(i);
        System.out.print(s1);
        }
    }
}

3 Risposte

  • Re: ArrayList<String> stampa inversa

    Credo che Il codice vada inserito nei tag code... e se possibile ben indentato...
    Non ho provato il tuo codice, ma io mi concentrerei sulla soluzione2... sembra la migliore...
  • Re: ArrayList<String> stampa inversa

        private static void inverso(String input){
            java.util.ArrayList<Character> lista =  new java.util.ArrayList<>(); 
            for(int i = 0; i < input.length(); i++)
                lista.add(input.charAt(i));
            java.util.Collections.reverse(lista);
            lista.forEach(name -> System.out.print(name));
        }
  • Re: ArrayList<String> stampa inversa

    Con una piccola modifica ho risolto così:
    
    public class Main {
        public static void main(String a[]){
            String s="Tanto va la gatta allardo che ci lascia lo zampino!";
            java.util.ArrayList<Character> lista =  new java.util.ArrayList<>(); 
            for(int i = 0; i < s.length(); i++)
                lista.add(s.charAt(i));
            java.util.Collections.reverse(lista);
            lista.forEach(name -> System.out.print(name));
            
        }
    } 
    
Devi accedere o registrarti per scrivere nel forum
3 risposte