Kommandozeilenparameter

evil

Aktives Mitglied
Hallo, ich mal wieder.

Ich möchte gern 2 Wörter bzw. Zahlen über die Kommandozeile einlesen, und diese dann miteinander verknüpfen.
Also geb ich zum Beispiel "java Programmname 1234 hallo" in die Kommandozeile ein und es soll "1h2a3l4lo" ausgegeben werden. Also immer abwechselnd.

Gibt es dort irgendeine Anweisung, wie dies gemacht werden kann?
Klar ist mir, dass ich dort eine Rekursion anwenden muss.

Vielen Dank.
Evil
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor
wandel die strings in ein char array um, und durchlaufe diese.

Java:
	char[] c1 = "1234".toCharArray();
	char[] c2 = "hallo".toCharArray();

Java:
	for (int i = 0; i < c1.length; i++) {
	    System.out.print(c1[i]+""+c2[i]);
	}

musst du noch ei nwenig anpassen (hallo ist ja länger als 1234)..aber so an sich würd ichs machen :D

/edit: oder einfach charAt bneutzen *g* :D
 
Zuletzt bearbeitet:

evil

Aktives Mitglied
1234 und hallo waren nur ein Beispiel. Die Wörter variiren immer und werden vom Nutzer selber in die Kommandozeile eingegeben.
Also kann ich in deinem Beispiel "1234" einfach durch den Namen meines Strings ersetzen? Wobei ich nun nicht weiß, wie ich der Methode sage, dass sie mit dem ersten Wort/Zahl arbeiten soll. Vielleicht mit args[0]?

charAt klingt gut. Kann ich da irgendwie sagen, dass er Zeichen weitergehen soll? Weil ich ja nie weiß, wie lang das Wort/die Zahl sein wird..
 
Zuletzt bearbeitet:

evil

Aktives Mitglied
Mh, ich glaub ich brauch da doch mehr Hilfe.

Ich hab das nun mal so angefangen, lieg da aber wahrscheinlich ziemlich falsch.

Java:
class Kombination {

	public static void main (String[] args) {
		Out.println(wort());		//Methode word ausgeben
	}
	
	static String wort(String s, String t) {
		char[] a = s.toCharArray();	//String s in einen Char-Array umwandeln
		char[] b = t.toCharArray();
		for (int i = 0; i < a.length; i++) {	//Jeden Buchstaben des Strings ablaufen
			return a;		// Zurück zum Array und mit dem nächsten Buchstaben weiter machen
		}	
	}
}
 
G

Gastredner

Gast
Die bei Programstart übergebenen Programmargumente sind im String-Array "args" der main-Methode zu finden:
Java:
public static void main(String[] args) {
	if (args.length == 2) {
		// Hier die Operation vornehmen.
	} else {
		System.out.println("Falsche Anzahl von Argumenten!");
		System.out.println("Benutzung: java Programm Wort1 Wort2");
	}
}
 

evil

Aktives Mitglied
Ich kann das leider nicht in einer einzigen Main-Methode schreiben, es muss in einer rekursiven Methode geschrieben werden.
 

eRaaaa

Top Contributor
ach, mir fällt im moment auch nix tolles ein ;(
Java:
    static void wort(String s, String t) {
	int i = 0;
	for (i = 0; i < Math.min(s.length(), t.length()); i++) {
	    System.out.print(s.charAt(i) + "" + t.charAt(i));
	}
	if (s.length() > i) {
	    System.out.print(s.substring(i, s.length()));
	}
	else if (t.length() > i) {
	    System.out.print(t.substring(i, t.length()));
	}
    }

so vllt? ;(
 
G

Gastredner

Gast
Ich kann das leider nicht in einer einzigen Main-Methode schreiben, es muss in einer rekursiven Methode geschrieben werden.
Dann setzt du an die entsprechende Stelle in der main-Methode halt einfach den ersten Aufruf der rekusiven Methode - so, wie du es schon einmal geschrieben hattest:
Java:
System.out.println(wort(args[0], args[1]);
Müsste dann natürlich noch auf die korrekte Signatur der Methode und deren Rückgabewert angepasst werden.
 

evil

Aktives Mitglied
Die if-Anweisung brauch ich nicht zu beachten, da es sich immer um 2 Wörter bzw Zahlen handelt. Nun hatte ich ja meinen Code gepostet und die return-Anweisung scheint ja völlig falsch zu sein (meldet mir der Compiler), das mit Out.println(wort(args[0] + args[1])); funktioniert auch nicht. Außerdem weiß ich nicht, wie ich das 2. Wort/Zahl verarbeiten soll.
 

eRaaaa

Top Contributor
ach so ein bisschen eigeninitiative wäre doch nicht schlecht :)

(zumal meine lösung eh nicht die tollste ist)
Java:
    public static void main(String[] args) {
	System.out.println(wort(args[0], args[1]));
    }

    static String wort(String s, String t) {
	StringBuilder sb = new StringBuilder();
	int i = 0;
	for (i = 0; i < Math.min(s.length(), t.length()); i++) {
	    sb.append(s.charAt(i) + "" + t.charAt(i));
	}
	if (s.length() > i) {
	    sb.append(s.substring(i, s.length()));
	} else if (t.length() > i) {
	    sb.append(t.substring(i, t.length()));
	}
	return sb.toString();
    }

und deine argumentation, wieso du die if, anweisung nicht brauchst, versteh ich nicht ?!
(und das 2. wort wird hier doch "verarbeitet")
oder bin ich heute so von der rolle, dass ich deine frage nicht verstehe? :D
 

evil

Aktives Mitglied
Ich würde gern Eigeninitiative mit einbringen. Leider hab ich im Kopf diesen "Plan", was das Programm machen soll, nur leider fehlt mir diese Erfahrung, um das alles so ins Programm mit einzubauen, wie ich das gern hätte :(

Und warum ich die if-Anweisung nicht beachten muss, ist, weil mir vorgegeben wird, dass ich auf jeden Fall nur 2 Zeichenreihen zum verarbeiten hab ;)

Eine Frage habe ich noch, was macht dieses Math.min genau?
 

eRaaaa

Top Contributor
Und warum ich die if-Anweisung nicht beachten muss, ist, weil mir vorgegeben wird, dass ich auf jeden Fall nur 2 Zeichenreihen zum verarbeiten hab ;)
schon klar, aber das hat doch mit der if anweisung nichts zu tun? die ist ja nur dafür da, dass wenn ein wort länger als das andere ist, die restlichen buchstaben noch angehängt werden!

Eine Frage habe ich noch, was macht dieses Math.min genau?

ermittelt von 2 zahlen die kleinere(hier also die länge der strings)
 

Ähnliche Java Themen


Oben