Logische Abfolge von buchstaben kombinationen

Status
Nicht offen für weitere Antworten.

TheTobi

Aktives Mitglied
Also ich möchte eine for oder eine while schleife die dies nacheinander ausgibt, dies mindestens auf 8 stellen. Aber ich scheine das irgendwie nicht hin zu kriegen, ich könnte ganz viele While schleifen machen, aber das wäre nicht so schön, kann man das nicht mit einer FOR Schleife realisieren, damit man die Anzahl der Kombinationen, bzw. der Stellen beliebig wählen kann?

a
b
c
d
e
aa
ba
ca
da
ea
ab
bb
cb
db
eb
ac

Ich glaube ich verstehe die logik irgendwie nicht um so etwas zu realisieren. Ich habe das mal mit 1 und 0 auf 2 stellen probiert also

00
01
11
10


Code:
String[] bruteString = new String[2];
		String[] dict = {"0","1"};
		int place=0;
		int counter=0;
		String forByteArray=null;
		for(int c=0;counter!=4;c++)
		{
		try
		{		
			counter++;
			bruteString[place] = dict[c];
			
			for(int p=0;p<=bruteString.length-1;p++)
			{
				forByteArray += bruteString[p];

			}        
			System.out.println(forByteArray);
    if(c==1)
    {
    	c=0;
    	bruteString[place+1] = dict[c];
    	bruteString[place] = dict[c];
    	sleep(3000);
    	
    }
 

Leroy42

Top Contributor
TheTobi hat gesagt.:
Also ich möchte eine for oder eine while schleife die dies nacheinander ausgibt, dies mindestens auf 8 stellen.

Dann bräuchtest du 8 ineinander verschachtelte, fest verdrahtete For-Schleifen
oder eine For-Schleife, die 8 ineinander verschachtelte For-Schleifen generiert
oder eine while-Schleife, die das Ganze quasi
von hinten
aufbaut.
 

TheTobi

Aktives Mitglied
Ja und das ist das Problem, ich will das eigentlich variable machen, also das das Konstrukt auch für 10 oder 15 Stellen ausgelegt ist. Wenn ich 8 For schleifen mache, geht das ja auch nur für 8stellen. Ist es überhaupt logisch möglich so etwas zu basteln??
 

andre111

Bekanntes Mitglied
Vielleicht gehts rekursiv... du übergibst der funktion die anzahl an stellen, und diese ruft dieselbe funktion mit anzahl an stellen - 1 auf. Dann musst du nur in der funktion jedes mal abfragen ob die anzahl > 0 ist.
 

Marco13

Top Contributor
Dann bräuchtest du 8 ineinander verschachtelte, fest verdrahtete For-Schleifen

:autsch: Was soll das den? *auf den Nicknamen guckt* Hat da jemand deinen Account gehackt?

Dort wird doch (wenn ich jetzt nich SCHWER falsch verstanden habe) einfach nur gezählt!? ???:L

Du hast einen Array mit Zahlen (ob du die Zahlen dann nachher auf chars oder Strings abbildest, oder auf Diddl-Mäuse, ist egal). In jedem Durchlauf erhöhst du die letzte Stelle. Wenn sie dadruch zu groß wird, wird sie auf 0 gesetzt, und die nächste um 1 erhöht, wenn die zu groß wird, auf 0 setze und die nächste erhöhen....

Ein bißchen Pseudocode:
Code:
int array[] = new int[10];
int maxValue = 5; // Wie groß eine einzelne Stelle sein kann. Für Buchstaben a,b,c,d,e wäre das 5

void increase()
{
    int i=array.length-1; 
    array[i]++;
    while (array[i] > maxValue)
    {
        array[i] = 0;
        i--;
        array[i]++;
    } // hier noch i<0 abfangen
}
(so "pseudo" ist das garnicht :roll: )

Die kann man dann aufrufen - in EINER for-oder While-Schleife.
Code:
long n = (long)Math.pow(5, 10);
for (long i=0; i<n; i++)
{
    increase();
    mappeDieIntsAusDemArrayAufBuchstabenUndGibDasGanzeAus(DASistJetztPseudocode;));
}
 

TheTobi

Aktives Mitglied
@Marco13

Also mein Code den ich gepostet habe, ist auch falsch da ich ja es nicht hinbekomme. Ich habe deinen Code auch modifiziert und versucht es hinzubekommen, es hat aber leider nicht geklappt, verstehe aber dein Beispiel auch nicht ganz, denn es soll ja nicht einfach nur gezählt werden, sondern wie ich oben schon geschrieben habe. z.b. so, das ich alle
kombinationen ausprobiere!!

00
01
10
11



Also wenn dein beispiel geht, wäre es nett wenn du es nur mal kurz fertig machen könntest, dann kann ichs vielleicht besser verstehen
 
S

SlaterB

Gast
> 00
> 01
> 10
> 11

ist doch eine Zählung, man fängt bei 00 an, dann +1, dann nochmal +1 und wegen Überlauf ist man bei 10 usw

so wie ein Kilometerzähler beim Auto oder eben ganz schlicht 'zählen',
nur dass die maximale Ziffer nicht 9 ist, sondern vielleicht nur 5 oder gar 26 (alle Buchstaben)

--------

erstmal das Zählen hinbekommen,
das Mappen auf chars ist danach leicht, wirst sehen

---------


du kannst natürlich hoffen, dass Marco13 oder sonstwer das noch genauer erklärt oder den Code postet,
ansonsten musst du bei Verständnisfragen bitte genauer im Detail fragen, WAS unverständlich ist,
und bei Codeproblemen deinen aktuellen Code posten, wiederum mit genauen Fragen,
 

Ark

Top Contributor
Code:
public class Test{

	private static int BASE=5;
	private static int OFF='a';
	private static int DIGITS=8;

	public static void main(String[] args){
		System.out.println((char)(OFF));
		for(int row=1;row<Math.pow(BASE,DIGITS);row++){
			for(int n=row;n>0;n/=BASE){
				System.out.print((char)(OFF+n%BASE));
			}
			System.out.println();
		}
	}
}
Ark
 
G

Guest

Gast
Hier noch eine rekursive Lösung
Code:
void print(final char[] digits, final StringBuilder buffer, int length)
{
   final int offset = buffer.length();
   buffer.setLength(buffer.length()+1);
   for(char digit : digits)
   {
      buffer.setCharAt(offset, digit);
      System.out.println(buffer);
   }
   if(--length>0)
   {
      for(char digit : digits)
      {
         buffer.setCharAt(offset, digit);
         print(digits, buffer, length);
      }
   }
   buffer.setLength(offset);
}
Aufruf mit z.B.
Code:
print("abc".toCharArray(), new StringBuilder(4), 4);
Die Ausgabe ist nicht sortiert. Dazu müsstest du die Ergebnisse z.B. in einem TreeSet "sammeln" und erst dann ausgeben.

Gruß,
semi
 
G

Guest

Gast
...oder noch etwas kürzer
Code:
void print2(final char[] digits, final StringBuilder buffer, int length)
{
   length--;
   final int offset = buffer.length();
   buffer.setLength(offset+1);
   for(char digit : digits)
   {
      buffer.setCharAt(offset, digit);
      System.out.println(buffer);
      if(length>0)
      {
         print(digits, buffer, length);
      }
   }
   buffer.setLength(offset);
}
 

TheTobi

Aktives Mitglied
@Gast:
Hey dank dir, habe es jetzt mit deiner Hilfe hinbekommen.

Auch den anderen vielen dank, eure code beispiele haben mir schon viel geholfen, der Code geht, jetzt muss ich ihn nur noch ganz verstehen. Also wenn ich fragen habe bezgl. des Codes, melde ich mich nochmal.

Also danke erstmal!!!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Bindung logische Operatoren Allgemeine Java-Themen 4
R Logische Ausdrücke in Java Allgemeine Java-Themen 4
B Parser für logische Ausdrücke Allgemeine Java-Themen 9
X Logische Operatoren auf binären Zahlen Allgemeine Java-Themen 2
kodela Gemittelte Ausgabe von Buchstaben Allgemeine Java-Themen 11
W Russische UND lateinische Buchstaben Allgemeine Java-Themen 19
Kingamadeus2000 Alle mehrfach vorkommenden Buchstaben rekursiv aus einem String entfernen. Allgemeine Java-Themen 6
parrot Gleiche Buchstaben Aufage Allgemeine Java-Themen 40
F In String 2 Buchstaben vertauschen Allgemeine Java-Themen 2
F Zurnung nach Buchstaben und deren Prüfung Allgemeine Java-Themen 9
Tacofan Hangman so viele Labels wie Buchstaben Allgemeine Java-Themen 5
L Menge der Buchstaben eines Textes zählen Allgemeine Java-Themen 3
KaffeeFan Methoden replace alle Buchstaben Allgemeine Java-Themen 3
P Methoden Häufigkeistverteilung von Buchstaben Allgemeine Java-Themen 2
I Eclipse API zur Buchstaben/Zeichensatzumwandlung Allgemeine Java-Themen 1
L Suchvorschläge beim eingeben einzelner Buchstaben Allgemeine Java-Themen 3
J Doppelte Buchstaben löschen - letztes Wort macht er nicht Allgemeine Java-Themen 2
S Char-index aller Buchstaben..? Allgemeine Java-Themen 3
S Entfernen von allen Nicht-Buchstaben chars aus einem String ohne Regex..? Allgemeine Java-Themen 10
C Buchstaben, die in zwei Wörtern vorkommen Allgemeine Java-Themen 13
P Unicode-Problem: Griechische Buchstaben Allgemeine Java-Themen 11
G Buchstaben in umkekehrter Reihenfolge ausgeben Allgemeine Java-Themen 4
A Wort in seine Buchstaben zerlegen Allgemeine Java-Themen 37
S Methode zum Zählen von Buchstaben in Strings gesucht Allgemeine Java-Themen 11
E Spezielle Buchstaben darstellen? Allgemeine Java-Themen 7
J Java - 4-Buchstaben-Programm. Hilfe. ich hänge fest Allgemeine Java-Themen 7
Luma Buchstaben "umrechnen" in HEX-, DEC- und BIN-Forma Allgemeine Java-Themen 2
G Methode, die Buchstaben in Zahlen umwandelt? Allgemeine Java-Themen 13
Luma String in seine Buchstaben zerlegen? Allgemeine Java-Themen 3
M Buchstaben anordnen / Wortliste Allgemeine Java-Themen 2
I Suche Methode: Buchstaben in ASCII umwandelt Allgemeine Java-Themen 2
H Kann keine Zahlen von Buchstaben unterscheiden Allgemeine Java-Themen 4
A Buchstaben zählen Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben