Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Java
You last visited: Today at 12:56

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Buchstaben zufällig drehen

Discussion on Buchstaben zufällig drehen within the Java forum part of the Coders Den category.

Reply
 
Old   #1
 
The_Dentist's Avatar
 
elite*gold: 13
Join Date: Nov 2014
Posts: 71
Received Thanks: 4
Buchstaben zufällig drehen

Hallo,

Ich stehe wieder vor einem kleinen Problem.

Und zwar soll ich eine Methode schreiben, welche zufällig einen String verdreht, falls man das so nennen kann.

z.B. das Wörtchen "Ein" wird zu "Ien" oder "Nie" usw. Dieses zufällig verdrehte Wort soll nun ausgeben werden.

Mein Ansatz sieht wie folgt aus:

Ich habe z.B. das Wort "Auto"

Nun wäre der erste Schritt eine zufällig generierte Zahl zu erzeugen.
Nehmen wir an diese Zahl ist 2.
Das heißt das t wird an die erste Stelle meines neuen Strings geschrieben.

Jetzt kommt der Part an dem ich hänge, dieses t muss nun logischerweise entfernt werden, sodass ich es nicht nochmal ziehen kann.


So sieht aktuell mein Code aus, allerdings werden da noch nicht die Zeichen entfernt und ich kann z.B. 4 mal gleichen Buchstaben wieder bekommen. Dabei bräuchte ich nun Hilfe.


Vielen Dank!

Gruß
The_Dentist is offline  
Old 02/08/2015, 19:26   #2
Administrator
 
lordsill's Avatar
 
elite*gold: 26516
Join Date: May 2011
Posts: 21,009
Received Thanks: 2,351
Eine Möglichkeit wäre, dass du eine weitere String-Variable hinzufügst, in der am Anfang der String in (Parameter der Methode) steht.
Innerhalb der for-Schleife dann eine weitere for-Schleife, die dann das Wort "kopiert", jedoch den Buchstaben an der Stelle rnd nicht dem Wort hinzufügt.

Also:

String in; -> Bleibt das Ursprungswort, dass der Methode übergeben wird
int rnd; -> Zufallszahl für den Buchstaben
String result; -> Das Wort mit der zufälligen Reihenfolge der Buchstaben
String temp; -> temporäre Variable. String wird kopiert jedesmal den String von in und übernimmt alle Buchstaben außer den Zufallssbuchstaben :: String in wird am Ende mit temp überschrieben

Zweite Möglichkeit:
Du speicherst, welche Zufallszahlen du bereits gezogen hast. Wurde per Zufall wieder eine Zahl gezogen, die bereits gezogen wurde, wird einfach solange eine neue Zufallszahl erzeugt, bis du eine Zahl hast, die noch nicht gezogen wurde.

Edit:
Wenn du nicht genau wissen solltest, wie es gemeint ist, kannst du dir den Code hier ansehen. Solltest es jedoch vorher erstmal selbst probieren, bevor du den Code anschaust.

(Methode 2 könnte man besser machen, wenn man statt dem Array eine Liste verwenden würde)

with best regards/Mit freundlichen Grüßen
LordSill
lordsill is offline  
Thanks
1 User
Old 02/08/2015, 21:45   #3
 
Zunft's Avatar
 
elite*gold: 0
Join Date: Mar 2013
Posts: 3,185
Received Thanks: 1,317
Ich würde es so lösen - ist um einiges eleganter und spart Peformance/Zeit:

Code:
    public static String random_string(String in) {
        char[] charset = in.toCharArray(); //Input String in CharArray umwandeln
        List<Character> characters = new ArrayList<Character>();
        for(char c : charset) //Jeden char
        {
            characters.add(c); //In die Liste hinzufügen
        }
        String out = "";
        while(characters.size() != 0) //Solange Buchstaben vorhanden sind
        {
            int rnd = (int)(Math.random() * characters.size()); //Erzeuge eine zufallszahl zwischen 0 und der Anzahl der Buchstaben
            out += characters.remove(rnd); //Füge den zufälligen Buchstaben dem Outputstring hinzu und lösche diesen Eintrag, damit kein Buchstabe doppelt gewertet wird
        }
        return out;
    }
Zunft is offline  
Thanks
1 User
Old 02/27/2015, 00:04   #4
 
elite*gold: 14
Join Date: Feb 2013
Posts: 129
Received Thanks: 2
Code:
public class Test {
	
	public static void main(String[] args) {
		
		String txt = "Ein"; //Dein String das gemischt werden soll
		
		txt = mixLetters(txt);
		
		System.out.println(txt);
	}
	
	public static String mixLetters(String str) {
		
		str = str.toLowerCase(); //alle Buchstaben klein
		String strMixed = "";
		int[] nums = randNumbers(str.length());
		
		for(int i = 0;i<str.length();i++) {
			if(i == 0)
				strMixed += (str.toCharArray()[nums[i]]+"").toUpperCase(); //Anfangsbuchstabe ist groß
			else
				strMixed += str.toCharArray()[nums[i]]; //Buchstaben in der Reihenfolge der Zufallszahlen
		}
		
		return strMixed;
	}
	
	private static int[] randNumbers(int strLength) { //Zahlen zwischen 0 und strLength
		
		int[] randPos = new int[strLength];
		for(int i = 0;i<randPos.length;i++) //da standardmaessig jedes Element mit 0 belegt ist
			randPos[i] = -1;
		int randNum = 0;
		
		for(int i = 0;i<randPos.length;i++) {
			
			randNum = (int) (Math.random()*strLength);
			
			for(int j = 0;j<randPos.length;j++) {
				
				if(randPos[j] == randNum) { //bis randNum noch nicht verwendet wurde
					randNum = (int) (Math.random()*strLength);
					j = -1;
				}
			}
			
			randPos[i] = randNum;
		}
		
		return randPos;
	}
}
meinselite
meinselite is offline  
Reply


Similar Threads Similar Threads
Hat jemand das zufällig?
02/18/2014 - Metin2 Private Server - 5 Replies
Hey, schaut euch mal bitte das video an: hat jemand zufälliger weise das "Tool" dafür oder die Dateien? LG SkyWodka
weiß des einer zufällig?:)
11/24/2012 - DarkOrbit - 2 Replies
weiß einer vllt für wieviel tage man openstealth für 2 euro bekommt? ich schätze es sidn um die 10 tage beim jetzigen stand... natürlich ohne klicker^^
weiß des einer zufällig?:)
11/20/2012 - DarkOrbit - 9 Replies
wenn man botter ist und man wird erwischt, kriegt man da gleich permabann oder kommt man erst ins stagingsystem? oder kommt es drauf an? danke im vorraus
WR bug zufällig passiert!!
12/29/2010 - WarRock Hacks, Bots, Cheats & Exploits - 16 Replies
Als ich in ein Room gejoint wurde geschah dies!!
Zufällig GM geworden mit der CE
02/07/2008 - Metin2 - 13 Replies
http://img166.imageshack.us/img166/7404/gmcheatdt9 .png bin natürlich nchit wirklich GM geworden ;) das wahr nur ein zufall der mir beim rumspielen mit der CE pasirt ist ^.^ und da dacht ich zeig ich euch das mal. mfg blubbber



All times are GMT +1. The time now is 12:58.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.