Pages: [1]   Go Down
Print
Author Topic: Esercizio asterischi  (Read 1138 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
ShiShi
Apprendista Forumista
**
Offline Offline

Gender: Female
Posts: 256



« on: 16-01-2009, 12:56:32 »

Code:
/*Scrivere un metodo che prenda come parametro formale un array di stringhe A
e restituisca in output un array B che sia una copia di A in cui tutti i caratteri,
ad eccezione dell'ultimo, dell'ultima stringa sono sostituiti con un asterisco.*/

public class Esercizio03 {
        public static void main (String [] args) {
    String [][] A = {{"abcds", "akjhdjnf", "ahjdco"},
                      {"adddd", "aaaao"}};
            A=metodo(A);
            for (int i=0; i<A.length; i++) {
                    System.out.println ("");
                for (int k=0; k<A[i].length; k++)
                    System.out.print (A[i][k]+"|");
                }
    }
   
static String [][] metodo (String [][] A) {
    for (int i=0; i<A.length; i++)
        for (int j=0; j<A[i].length; j++) {
                 A[i][j]=metodo2(A[i][j]);
            }
        return A;
    }

static String metodo2 (String A) {
        String O="";
    for (int i=0; i<A.length(); i++)   
    O+="*";
    for (int j=A.length()-1; j<A.length(); j++)
        O+= A.charAt(j);   
        return O;
    }
}

Non riesco a lasciare solo l'ultimo carattere nell'ultima stringa  Qualcuno può darmi una mano?
Ottengo questo output


Code:
>java Esercizio03

*****s|********f|******o|
*****d|*****o|>Exit code: 0
Logged
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #1 on: 16-01-2009, 14:58:57 »

Intanto devo farti notare che hai malinteso il testo dell'esercizio: il metodo da scrivere deve prendere come parametro formale un array di stringhe, non un array di array (cioè array bidimensionale) di stringhe.
Inoltre, sempre secondo il testo della consegna, solo l'ultimo stringa copiata da A deve avere tutti i suoi caratteri, eccetto l'ultimo, uguali all'asterisco, infatti:
Quote
restituisca in output un array B che sia una copia di A in cui tutti i caratteri, ad eccezione dell'ultimo, dell'ultima stringa sono sostituiti con un asterisco.
è semanticamente equivalente a:
Quote
restituisca in output un array B che sia una copia di A in cui tutti i caratteri dell'ultima stringa sono sostituiti con un asterisco, ad eccezione dell'ultimo.
(ho solo spostato l'inciso alla fine del periodo)

Questo è un codice che fa al caso tuo
Code:
/*Scrivere un metodo che prenda come parametro formale un array di stringhe A
e restituisca in output un array B che sia una copia di A in cui tutti i caratteri,
ad eccezione dell'ultimo, dell'ultima stringa sono sostituiti con un asterisco.*/

public class Esercizio03
{
    static String [] metodo (String [] A)
    {
        String [] B = new String  [A.length];
       
        //gestisce esplicitamente il caso di array vuoto
        if (A.length == 0) return B;
       
        //ricopia tutte le stringhe tranne l'ultima
        for (int i = 0; i < A.length - 1; i++)
            B [i] = A [i];
       
        //usa due indici calcolati una sola volta per motivi di efficienza
        int lastIndex = A.length - 1, max = A [lastIndex].length () - 1;

        //inizializza l'ultima stringa dell'array B da restituire
        B [lastIndex] = "";

        //mette in tale stringa esattamente n-1 asterischi,
        //avendo posto n = "la lunghezza dell'ultima stringa di A"
        for (int i = 0; i < max; i++)
            B [lastIndex] += "*";
       
        //accoda l'ultimo carattere dell'ultima stringa di A all'ultima stringa di B
        B [lastIndex] += A [lastIndex].charAt (max);
       
        //restituisce infine B
        return B;
    }
   
    public static void main (String [] args)
    {
        String [] b = metodo (args);
        for (int i = 0; i < args.length; i++)
            System.out.println (b [i]);
    }
}
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
ShiShi
Apprendista Forumista
**
Offline Offline

Gender: Female
Posts: 256



« Reply #2 on: 16-01-2009, 16:16:08 »

Grazie reversengineer allora lo so fare, cioè l'avevo fatto anche così e mi sembrava errato.
Se voglio fare invece array bidimensionale con ogni lettera di ogni stringa sostituita con asterisco tranne l'ultima lettera dell'ultima stringa?(in pratica come per errore volevo fare prima)
Solo per saperlo fare io, mi sono fissata   ormai cry, se sai come si potrebbe fare...
Logged
Pages: [1]   Go Up
Print
Jump to: