Java, erstellen Sie ein array von StringBuffer

Ich habe ein problem mit Java.

Angenommen, n ist eine ganze Zahl, ich möchte ein array erstellen, die der StringBuffer enthält alle 26^n Kombinationen der Buchstaben des Alphabets, mit der lexikographischen Ordnung. Ich ArrayIndexOutOfBoundsException erhalten.

Schrieb ich diese Klasse:

public static StringBuffer[] creaTabellaTotale(int n, char[] a) {   


     StringBuffer[] tabella = new StringBuffer[ pow(26, n)];
     for(int w =0; w < pow(26, n); w++)
         tabella[w] = new StringBuffer("");

     for(int h = 1; h <= n ; h++){
        for(int u =0; u < pow ( 26, h-1); u++){

        for (int j = 0; j<26; j++){

            for( int x =pow(26, n-h+1)*u + pow(26, n-h)*j; x< pow(26, n-h+1)*u + pow(26, n-h)*(j+1); x++)
                tabella[x] = tabella[x].append(a[j]);
        }

        }

     }

     return tabella;
 }

Hier wird ein[] ist ein array mit den 26 Buchstaben in alphabetischer Reihenfolge; ich habe es umgeschrieben, pow(), dessen Prototyp int pow(int b, int e). Ich bin nicht in der Lage den Fehler zu finden.

  • Hmmm, was Fehler??? (es gibt eine Ausnahme? es berechnet nicht die richtigen Kombinationen? ...)
  • 26^n ist sehr groß, sogar für eine n so klein wie 5 es wird 11881376. Sie kann auch nicht vorbei gehen n = 6 denn Sie können nicht erstellen Sie ein array, das groß ist (der Wert übertrifft-int max-Wert).
  • ja, was ist der Fehler??? welche Arten von Werten sind, die Sie versucht? Nicht nehmen, ein großes n für Ihr int zu werden, nicht genügend Speicher
  • Ja, die Ausnahme ist ArrayIndexOutofBoundsException. Also, wie kann ich auf geordnete Liste der 26^n Worte?
  • ok, in diesem Fall das problem ist sicherlich mit der Zuordnung Wert von x
  • für was brauchen Sie diese? für brute-force-hacking?
  • Nein, es ist akademisches Zeug

InformationsquelleAutor boris | 2013-08-09
Schreibe einen Kommentar