Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Errore concettuale

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    88

    Errore concettuale

    Ragazzi sto cercando di fare un esercizio ma proprio non ci riesco

    devo inserire una stringa da liena di comando e da questa parola devo ricavare tutte le possibili combinazioni di parole da tre lettere.

    Esempio:
    ciao --> cia, cio, cai, cao, coi, eccetera...

    ho scritto questo codice ma non funziona correttamente, riuscite a capire dove sbaglio?

    package capitolo10;

    import java.io.*;


    public class Esercizio10_21 {

    /**
    * @param args
    * @throws IOException
    */
    public static void main(String[] args) throws IOException {
    // TODO Stub di metodo generato automaticamente

    BufferedReader tastiera = new BufferedReader(new InputStreamReader(System.in));

    String parola = tastiera.readLine();
    char array[] = parola.toCharArray();
    String output="";

    for(int i=0; i<array.length; i++)
    for(int y=0; y<array.length; y++)
    for(int z=0; z<array.length; z++)
    {
    output=""+array[i];


    if(y==i)
    {
    do
    {
    y++; System.out.println("y++"+y);
    if(array.length-1<y)
    {y=0; System.out.println("if"+y);}
    }
    while(y==i);{}
    output+=array[y]; System.out.println("output "+output);
    }
    else if(y!=i)
    {output+=array[y]; System.out.println("else "+output);}




    if(z==y || z==i)
    {
    do
    {
    z++;
    if(array.length-1<z)
    z=0;
    }
    while(z==y && z==i);
    output+=array[z];
    }
    else if(i!=z || y!=z)
    output+=array[z];




    System.out.println(output);
    }



    }

    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Ad esempio grazie a queste linee non esci mai dal for
    codice:
    if(z==y || z==i) {
       do {
          z++;
          if(array.length-1<z)
             z=0;
    dopo tot iterazioni arrivi al punto che y=array.length-1 e z=array.length-1. Grazie a z++, z diventa array.length e di conseguenza, essendo array.length-1<array.length=z, z prende il valore 0 e la guardia del ciclo for non viene mai violata. Continua a ciclare su z, ma appena arriva a array.length-1, si azzera e quindi va in loop infinito. Non ho letto il codice attentamente, ma basta entrare nel for successivo, solo se l'indice del for attuale e diverso dagli indici dei for precedenti. (Eheh, detto cosi' sembra un casino, ma guarda l'esempio sotto che vale piu' di mille parole).

    codice:
    //faccio quello che devo fare e arrivo al momento in cui ho la parola
    char[] out;
    for(int i=0; i<parola.length(); i++) {
          for(int j=0; j<parola.length(); j++) {
               if(j!=i) {
                   for(int z=0; z<parola.length(); z++) {
                       if(z!=i && z!=j) {
                           out = new char[]{parola.charAt(i),parola.charAt(j),parola.charAt(z)};
                           System.out.println(out);
                       }
                   }
               }
          }
    }
    //Resto della classe

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    88
    Sei stato veramente grande. mi ero impelagato in strutture di controllo assolutamente superflue. ciao e grazie

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.