# Kommandozeile lesen



## SPN_X (16. Oktober 2006)

Hey leutz, ich habe ein programm geschriben ' Caesar Chiffre' bin noch anfänger und habe ein Problem. 
Mein Programm soll einen text den man in der Kommandozeile eingibt verschlüsseln, das bekomme ich hin!
Dann soll er jedoch den verschlüsselten ausgegebenen Text einlesen und den wieder entschlüsseln.
Blöß wie lese ich eine zeil die ich ausgegeben habe ein?

Mein Funktionierender Code zum einlesen und verschlüsseln:
Ist für euch vllt zu viel arbeit aber ich hab halt noch keine ahnung und bin froh wenns läuft ^^.

```
import java.lang.*;
import java.io.*;
public class Caesar
{
        public static String readString()
	{
		BufferedReader reader = new
			BufferedReader(new InputStreamReader(System.in));
		System.out.flush();
		try{return reader.readLine();}
		catch(Exception e) {System.out.println(e);}
		return new String("");
	}

	public static void main(String[] args)
	{
		int var, varUml, key=1, caps=32;
		String Eingabe, AusgabeEn, AusgabeDe, AusgabeUml;
		System.out.println("Der unverschluesselte Text:");
		Eingabe = readString();
		System.out.println("\nDer verschluesselte:");
		for(int i=0; i<Eingabe.length(); i++)
		{
			varUml = 101;
			var = Eingabe.charAt(i);		
			if("a".charAt(0) <= var && var <= "z".charAt(0))
			{
				var = var + key;
				varUml = 0;
				// größer z - mache bei a weiter
				if(var > "z".charAt(0))
				{var = var-26;}
			}
			if("A".charAt(0) <= var && var <= "Z".charAt(0))
			{
				var = var + key + caps;
				varUml = 0;
				if(var > "z".charAt(0))
				{var = var-26;}
			}
			// Überprüfen ob Sonderzeichen	
			if(var == "ü".charAt(0) || var == "Ü".charAt(0))
			{
				var = "u".charAt(0) + key;
				if(var > "z".charAt(0))
				{var = var-26;}
				varUml += key;
				// größer z - mache bei a weiter
				if(varUml > "z".charAt(0))
				{
					var = var-26;
				}
			}
			//if(... das selbe mit ö und ä
			// umwandeln von int zu String
			if(var != 32 && varUml != 0)
			{
				AusgabeEn = String.valueOf((char)var);
				AusgabeUml = String.valueOf((char)varUml);
			}
			else if(var != 32 && varUml == 0)
			{
				AusgabeEn = String.valueOf((char)var);
				AusgabeUml = "";	
			}
			else
			{
				AusgabeEn = "";
				AusgabeUml = "";
			}
			System.out.print(AusgabeEn + AusgabeUml);
		}
```
nun dann will ich den die ausgabe einlesen. aber da ich nicht einfach schreiben kann EingabeNeu = System.out.print(AusgabeEn + AusgabeUml); -da AusgabeUml mal vorkommt und mal nicht (und er beim compilieren fehler entdeckt), will ich die Kommandozeile auslesen und dann das ganze noch mal machen bloß andersrum:

```
// Weiterführung des vorigen Codes
		System.out.println("\n\nDer Encrypte Text:");
		// ? CMD-Ausgabe einlesen
		for(int i=0; i<Eingabe.length(); i++)
		{
			var = Eingabe.charAt(i);		
			if("a".charAt(0) <= var && var <= "z".charAt(0))
			{
				var = var - key;
				if(var < "a".charAt(0))
				{var = var+26;}
			}
			if("A".charAt(0) <= var && var <= "Z".charAt(0))
			{
				var = var - key + caps;
				varUml = 0;
				if(var < "a".charAt(0))
				{var = var+26;}
			}
			if(var != 32)
			        AusgabeDe = String.valueOf((char)var);	
			else
				AusgabeDe = "";
			System.out.print(AusgabeDe);
		}
	}
```

Ich danke schon mal und falls mein Code nicht ganz richtig sein sollte hab ich im anhang nocheinmal die originale zum testen.


----------



## flashray (16. Oktober 2006)

Hallo Caesor,

erstens du kannst die "cmd-Ausgabe" nicht einlesen. Zweitens, warum auch, brauchst du nicht.

Du fügst einfach hinter dem ersten Teil (Verschlüsseln) eine oder mehrere if Bedingungen oder ein switch, in dem du je nach vorherigen Ergebnissen mit dem zweiten Teil weiterverfährst. Es sind ja noch alle vorherigen Variablen vorhanden in denen die Ergebnisse noch gespeichert sind!


Vg Erdal


----------

