fortwährende Zeichenkette

darkeye2

Bekanntes Mitglied
Hallo,

ich hab grad irgendwie keine idee, wie ich folgendes richtig umsetzen kann...

Ich habe eine methode, die bei jedem aufruf mir die "nächste" zeichenkette liefern soll. Die zeichenkette ist zwischen 1 und 14 zeichen lang, und soll eben in der methode generiert werden.

Am anfang sollen alle möglichen 1 stelligen werte kommen, dann 2, dann 3 usw.

Genauer gesagt, wenn ich jetzt nur buschtaben hätte, würde es so aussehen:
aufruf - return wert
1 - a
2 - b
3 - c
...
27 - aa
28 - ab
...
53 - ba
und so weiter, ich hoffe es ist jetzt klar, wie das gemeint ist, und wenn die letzte 14 stellige kette ausgegeben wurde soll danach nur noch "fertig" zurückgegeben werden.

Nun weiß ich nicht, wie ich das am besten machen kann, ich denke zwar an Schleifen, komme aber auch da net wirklich weiter, weil ich net weiß, wie ich diese richtig veschachteln soll, usw ...

Hoffe auf hilfreiche tipps und denkansätze
 

XHelp

Top Contributor
Im Endeffekt hast du dann dein eigenes Zahlensystem. Schau dir an wie die Umwandlung von Dezimal zu Hexadezimal abläuft. Ist das gleiche wie bei dir, nur eben mit basis 16.
 

darkeye2

Bekanntes Mitglied
also erstens müsste ich dann zimlich viel reinschreiben, da sich mein zeichnsatz net nur auf die 26 buchstaben beschräkt, und da dachte ich eher an sowas wie
Java:
for(int i = 23; i < 240;  i++){
     System.out.println(String.valueOfChar((char)i));
}

Das Problem ist, dass ich ja irgendwie steuren muss, wie viele zeichen grad ausgegeben werden sollen, und es ja so fortwährend geschehen soll, wie oben beschrieben.

EDIT: was oben vllt irritiert: aufruf heißt net, dass ich das mit übergebe, sondern wenn ich die methode zum x-ten mal aufrufe, und rückgabe ist halt der wert der dann zurückkommen sollte.
 

XHelp

Top Contributor
Du kannst ja sowas wie:
Java:
public static String getStringByNumber(int i) {
  if (i<alphabet.length) {
    return ""+alphabet[i];
  }
  return getStringByNumber(i/alphabet.length)+alphabet[i%alphabet.length];
}
und dann einfach nur mit einer schleife es aufrufen

Wobei in diesem Fall alphabet ein char-Array mit deinem Alphabet ist.
 
J

JohannisderKaeufer

Gast
Code:
64509974703297150976
+2481152873203736576
+  95428956661682176
+   3670344486987776
...
+                 26
====================
= Eine verdammt große Zahl

Diese verdammt große Zahl ist größer als Long.MAX_VALUE :noe:

System.currentTimeInMillis gibt die Aktuelle Zeit in Millisekunden, ab 1. Januar 1970 zurück. Das war ziemlich genau vor 40 Jahren. Im Jahr 292278994 wird es dann einen Overflow geben. Du brauchst aber mehr Iterationen als long Zahlen darstellen kann.

Wenn du dein Programm nun laufen läßt, und jede Ausgabe nur eine Millisekunde dauert, wenn man auf die Konsole schreibt, dann kann das durchaus einen Moment dauern. Dann wird das Programm sehr sehr lange laufen müssen bis es "fertig" ausgibt.:lol:

Ich empfehle daher eine Robuste Hardware ein zu setzen und auf eine Unterbrechungsfreie Stromversorgung zu achten.
 

Ähnliche Java Themen

Neue Themen


Oben