100989
Goto Top

JavaKara - charAt(i) einer bestimmten void zuordnen

Das Programm frägt nach einer Eingabe eines Satzes.
Dieser wird als String eingelesen und es gibt zu jedem Buchstaben eine eigene void,
nun habe ich folgenden Code:

String text;
text=tools.stringInput("Bitte geben Sie einen Text ein\nKara wird diesen für Sie in Form von Kleeblättern legen");  
char array = new char[text.length()];
int i=0;
while(i<text.length()) {
   array[i] = text.charAt(i);
   i++;
}

Wie schaffe ich es, dass wenn zum Beispiel der String "Hello World" beinhielte, er für H die void H() ablaufen lässt, für e die void E() für " " die void Space() ablaufen lässt etc...

Ich hoffe ihr könnt mir bei diesem Problemchen helfen sonst bin ich echt aufgeschmissen (:
Dankö

Content-Key: 169012

Url: https://administrator.de/contentid/169012

Printed on: April 25, 2024 at 09:04 o'clock

Member: dog
dog Jul 03, 2011 at 02:22:11 (UTC)
Goto Top
Wie schaffe ich es, dass wenn zum Beispiel der String "Hello World" beinhielte, er für H die void H() ablaufen lässt, für e die void E() für " " die void Space() ablaufen lässt etc...

Geht das auch auf Deutsch?
Mitglied: 100989
100989 Jul 03, 2011 at 10:38:39 (UTC)
Goto Top
So kompliziert?
okay...

Kara frägt den User nach einem Input
Der Input ist bspw. "Hello World" und ist ein String
Dieser wird mit der oben angegebenen while-Schleife abgearbeitet.
Für jeden Buchstaben gibt es in der übergeordneten Class eine void die den Code enthält, wie Kara laufen muss damit der Buchstabe in Form von Kleeblättern angezeigt wird.

Wie schaffe ich es, dass der charAt(i) die jeweilige void für den Buchstaben ablaufen lässt?

_------------------------------------------------------

bin jetzt so weit gekommen dass es funktioniert:

String text;
text=tools.stringInput("Bitte geben Sie einen Text ein\nKara wird diesen für Sie in Form von Kleeblättern legen");  
char array = new char[text.length()];
int i=0;
while(i<text.length()) {
    array[i] = text.charAt(i);
    if(array[i]=='A'||array[i]=='a'){  
        this.type_A();
    }
    else if(array[i]=='B'||array[i]=='b'){  
        this.type_B();
    }
    i++;

geht das auch iwie schöner?
Member: dog
dog Jul 03, 2011 at 14:16:26 (UTC)
Goto Top
1. Was du ein "void" nennst, nennt jeder normale Programmierer eine "Funktion" oder "Methode" !
2. Java ist die falsche Sprache für dynamische Funktionsaufrufe
3. Ja, es geht:
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;


public class MainApp {

	/**
	 * @param args
	 */
	public static void main(String args) {
		(new MainApp()).func();
	}
	
	public void func() {
		String method = "A";  
		try {
			Method m = this.getClass().getMethod(method);
			m.invoke(this);
		} catch (SecurityException e) {
			System.err.println("Der Security-Manager hat den Zugriff verweigert!");  
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			System.err.println("Unbekannte Funktion!");  
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			System.err.println("Die Anzahl der übergebenen Argumente war falsch!");  
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			System.err.println("Auf diese Funktion kann hier nicht zugegriffen werden!");  
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			System.err.println("Der Funktionsaufruf ist fehlgeschlagen:");  
			e.printStackTrace();
		}
		
	}
	
	public void A() {
		System.out.println("A called");  
	}

}
Mitglied: 100989
100989 Jul 03, 2011 at 14:34:25 (UTC)
Goto Top
Danke für den sicher ausführlich richtigen Code. Das Problem ist das folgende:
Es handelt sich hierbei um ein Schulprojekt welches mit JavaKara (swisseduc.ch) realisiert wird.
Kara ist ein Marienkäfer und legt Kleeblätter ab (in Form von Buchstaben..)

das kann ich in dem Fall leider so nicht verwenden da ich erstens das irgendwie selber hinwurschdeln zu versuche
und zweitens ich deinen code so schön ordentlich er auch ist nicht ansatzweise kapiere.

sry face-sad

momentan sieht der code so aus und er funktioniert auch so weit
http://snipt.org/xkpR
Member: dog
dog Jul 03, 2011 at 20:49:23 (UTC)
Goto Top
Du wolltest wissen ob man dymanische Methodenaufrufe machen kann und mein Beispiel zeigt die einzige Möglichkeit in Java.

Ansonsten musst du bei deiner Methode bleiben.