Caesar Ver- und Entschlüsselung

Status
Nicht offen für weitere Antworten.

philipp123

Neues Mitglied
Hallo,
ich habe ein Problem bei dem ich nicht weiter komme. Die Aufgabenstellung ist, dass ich ein Programm schreiben soll, wo ein Wort ver- und entschlüsselt werden soll mit der Caesar Methode. Es sollen ganz bestimmte Buchstaben und Sonderzeichen zur Ver- und Entschlüsselung verwendet werden. Mein Problem ist, dass ich es nicht hinbekomme, sobald ein Buchstabe oder Sonderzeichen, welches nicht definiert ist (z.B "ä"), das Programm mir eine Fehlermeldung, wie "Falsche Eingabe" ausgibt. Hat irgend einer ne Idee. Mit exeptions würde ich nicht so gerne arbeiten, da ich die nicht so wirklich verstehe...
Wenn mir jemand helfen könnte wäre echt cool, danke schonmal im Voraus...

Hier ist mein bisher erstellter Quelltext:

Code:
public class Semesteraufgabe5
{	
	
   public static void starten ()
{
			System.out.println ("Was willst du? Verschluesseln (V), entschluesseln (E) oder das Programm beenden (B)?");
				String x = Tools.stringEingabe ();
					if (x.equals("V"))
					{
					String e=verschluesseln ();
					System.out.println(" "+e);
					}										//Menüerstellung
					else
					{
					if (x.equals("E"))
					{
					String e=entschluesseln ();
					System.out.println(" "+e);	
					}
					else
					{
					if (x.equals("B"))
					{
					System.out.println ("Das Programm wurde beendet!");
					}
					else
					{
					System.out.println("Falsche Eingabe,nächster Versuch!");
					System.out.println (" ");
					starten ();
					}
					}
					}
	}
	public static String entschluesseln()
	{
		System.out.println ("Bitte geben Sie das zu entschlüsselnde Wort ein!");
		String text= Tools.stringEingabe ();
		System.out.println (" ");
		System.out.println ("Bitte geben Sie eine ganze Zahl ein!");
		int zahl= Tools.intEingabe (); 
		zahl=zahl*-1;
		if (zahl >76 || zahl<-76)
		{
			zahl = zahl % 76;
			
		}
		String a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 @.,:;?-()/=+´";
		String e = " ";
		for( int i=0; i<text.length(); i++ )
		{
		int p = a.indexOf( text.substring(i,i+1) );
		p =p+ zahl;
		if( p>=76 ) p=p-76;
		else
		{
		if( p<0 ) p=p+76;
		}
		e = e+a.substring(p,p+1);
		}
		return e;
	}
	public static String verschluesseln()
	{
		System.out.println ("Bitte geben Sie das zu verschlüsselnde Wort ein!");
		String text= Tools.stringEingabe ();
		System.out.println (" ");
		System.out.println ("Bitte geben Sie eine ganze Zahl ein!");
		int zahl= Tools.intEingabe ();
		if (zahl >76 || zahl<-76)
		{
			zahl = zahl % 76;
			
		}
		String a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 @.,:;?-()/=+´";
		String e = " ";
		for( int i=0; i<text.length(); i++ )
		{
		int p = a.indexOf( text.substring(i,i+1) );
		p =p+zahl;
		if( p>=76 )	p=p-76;
		else
		if( p<0 ) p=p+76;
		e = e+a.substring(p,p+1);
		}
		return e;
		

	}
	
	public static void main (String [] args)
	{
		starten ();
		
	}
	
		
}
 
du hast doch sogar schon die nötigen dinge im code. überprüf einfach, ob indexOf -1 zurückliefert. in dem fall hast du ein (nach definition in a) sonderzeichen gefunden. die fehlerbehandlung kannst du dir dann überlegen, aber bei deinem unflexiblen grunddesign (sorry *g) wär wohl eine exception das einfachste.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben