Hallo liebe community.
Ich brauche für mein programm einen string namens gtext der alle parameter der kommandozeile bis auf die ersten zwei in einen string abspeichert. leider krieg ich dass irgendwie nicht hin. das programm soll später so funktionieren und via cmd so aufgerufen werden. java krypt 3 true DAS IST DER TEXT. Der string den ich benötige soll also DAS IST DER TEXT beinhalten.
gtext = gtext.toUpperCase();
for (char i : gtext.toCharArray()) {
output.append(Buchstabe.encode(i));
}
System.out.println(output);
} else if (kodierung.equals(true)) {
gtext = gtext.toUpperCase();
for (char i : gtext.toCharArray()) {
output.append(Buchstabe.decode(i));
}
System.out.println(output);
}
}
}
//es geht mir um den fett markierten teil. dieser soll alle argumente ab dem dritten beinhalten damit meine anderen methoden funktionieren.. mit dem stringbuilder scheinen die methoden nicht zu laufen
Kan man, wenn man solche Texte als einen einzigen Parameter haben möchte beim Aufruf nicht einfach 'nen Paar Quotes drum herum machen?
[c]java krypt 3 true "DAS IST DER TEXT"[/c]
Fürs nächste mal:
- Beschränke dich bei deinem Code auf das eigentliche Problem. Die Klasse krypt ist nicht relevant. Für dein Problem ist nur die main Methode von Interesse.
- poste Java Code in JAVA Tags. Der rote Hinweistext sollte eigentlich nicht zu übersehen sein...
Ich sehe in deinem Code nirgends, dass du was mit den anderen Parametern machst, du verarbeitest nur args[0], args[1] und args[2].
Du brauchst zumindest mal ne Schleife die von i=2 bis ... läuft und alle Parameter einem String hinzufügt.
EDIT:
Oder du lässt dir einfach die Lösung geben...
Rausfiltern glaube ich theoretisch gar nicht. Jedoch kannst du die Annahme treffen das nach jedem args-Eintrag eine Leerzeile auftritt also einfach nach jedem Durchlauf der Schleife ein " " anhängen.
Java:
for(int i =2; i < args.length; i++){
gtext += args[i]+" ";}
java unterscheidet sich von c in soweit das nur "eigene" parameter in main() landen ... alle VM parameter sowie "java" als auch der klassenname selbst landen nicht in diesem array ...
folglich ist das erste array-element der erste eigene parameter den man übergibt nach dem man als letzten VM-parameter seine klasse übergeben hat ...
dein sample
java krypt 3 true DAS IST DER TEXT
hat genau 3 davon
3
true
DAS IST DER TEXT
um jetzt allerdings den normalen trenner eines terminals zu umgehen brauchst du das ganze nur zu quoten :
java krypt 3 true "DAS IST DER TEXT"
wenn innerhalb des parameters quotes kommen einfach escapen
java krypt 3 true "DAS IST \"DER\" TEXT"
also hast du alles in "args[2]" drin stehen ..
und genau darum ist alles von wegen irgendwelche loops und umkopieren und mehrere elemente des arrays zu nutzen einfach nur schwachsinn ...
warum soll man sich als programmierer drum kümmern wenn der user zu blöd ist EINEN parameter richtig zu übergeben ?
ich finds mit einem auge zum heulen und mit dem anderen zum drüber kaputt lachen was hier für antworten kommen mits loops und weis der geier antstatt lediglich drauf hinzuweisen wie man in nem standard-terminal EINEN parameter übergeben kann der nun mal das terminal-typische trenner-zeichen enthält ...