Problema esercizio.

Stato
Discussione chiusa ad ulteriori risposte.

RedSkull

Utente Electrum
1 Aprile 2008
177
19
0
103
Stavo seguendo questa guida al java: http://twiki.di.uniroma1.it/pub/Metod_prog/EO/MPprogramma/da_C_a_Java_1.html
quando sono incappato in questo esercizio:
Parole_verticali] Scrivere un programma che legge tre parole e le stampa in verticale l'una accanto all'altra. Ad esempio, se le parole sono "gioco", "OCA" e "casa" allora il programma stampa:

gOc
iCa
oAs
c a
o
Ho fatto questo cod, ma penso non sia il massimo, come lo avreste fatto voi ?

Codice:
  public class Esercizi{
  public static void main(String args[]){
    String str1="gioco",str2="OCA",str3="casa";
    int j=0;
    for(int i=0;i<str1.length();i++){
      System.out.print(str1.charAt(i));
      if (i < str2.length()){
        System.out.print(str2.charAt(i));
      }
      if(i < str3.length()){
        System.out.print(str3.charAt(i));
      }
      j++;
      if(j == 1){
        System.out.println("");
        j=0;
      }
    }           
  }
 }
 
yellow_warning.gif
Nessun risultato trovato per "formato tabulare distanziali".
 
g o c
i c a
o a s
c a
o

una cosa del genere è più leggibile solo non so se ci sia in java...ma sicuramente c'è.
 
Edo nell'esercizio deve venire così quindi perchè modificare?
a me non importa il risultato visto che il mio cod funziona...
volevo soltanto sapere se voi l'avreste fatto in un altro modo, per esempio usando altre funzioni etc.
 
hai fatto l'esercizio già nel miglior modo possibile, cioè il KISS (Keep It Simple Stupid). Al massimo puoi mettere anche le parole in un vettore e ciclarlo: così puoi scrivere N parole in verticale con N richiesto all'utente.
 
LOL ok grazie.
perchè ancora mi sento disorientato in java xD
preferisco consigli da persone preparate che sbattere la testa da solo insegnandomi in modo sbagliato.
 
Lasciando quelle stringhe si potrebbe fare qualcosa di molto più veloce tipo:
Codice:
public class Esercizi{
  public static void main(String args[]){
     String str1="gioco",str2="OCA",str3="casa";
     for(int i=str2.length();i<str1.length();i++){
         str2+=" ";
         str3+=" ";
     }
    for(int i=0;i<str1.length();i++){
        System.out.println(str1.charAt(i)+" "+str2.charAt(i)+" "+str3.charAt(i));
    }
  }
}
ma per questo preciso esercizio la soluzione migliore che ho trovato è:
Codice:
public class Esercizi1{
  public static void main(String args[]){
     String str1="gioco",str2="OCA",str3="casa";
    for(int i=0;i<str1.length();i++){
        if(i<=(str1.length()-str2.length())){
            str2+=" ";
            str3+=" ";
        }
        System.out.println(str1.charAt(i)+" "+str2.charAt(i)+" "+str3.charAt(i));
    }
  }
}
anche se nell'ordine dei millisecondi sono sicuro al 100% (anche se non ho provato) che il tuo codice è molto più lento rispetto al mio,per il semplice fatto che tu utilizzi 3 SOP (abbreviazione di System.out.println()) e questa istruzione rende molto lento un eventuale programma.
Prova a fare un ciclo for 1 milione di volte e fallo una volta con delle SOP e una volta senza,ti accorgerai che quando non ci sono le stampe il ciclo finisce molto prima ;)
 
Stato
Discussione chiusa ad ulteriori risposte.