Szyfr Cezara - Zapętlenie tablicy.

0

Witam piszę program stosujący szyfr cezara.

package SC;
import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		
		char[] alphabet="abcdefghijklmnoprstuwxyz".toCharArray();
		System.out.println("Podaj zdanie do zaszyfrowania.");
		String input=in.nextLine();
		System.out.println("Podaj wartość przesunięcia.");
		int przesunięcie=in.nextInt();
		for (int i=0; i<input.length(); i++){
			for (int l=0; l<alphabet.length; l++){
				if (input.charAt(l)==alphabet[23]){ //Ten if wcześniej był niżej, jednakże przeniosłem go dla testu.
						alphabet[l]/=alphabet.length;
				}
				
				if (input.charAt(i)==alphabet[l]){
					System.out.print(alphabet[l+przesunięcie]);
					
					
					
				
				
					
			}
			
		}
			
		}
		
	}

}
 

Wszystko ładnie pięknie do czasu kiedy zostanie wpisana literka "z". Rozumiem czemu wywala wyjątek i teoretycznie jak temu zaradzić, ale nie potrafię tego zrobić w praktyce. Tam na pewno widać nieudolne próby zapętlenia tablicy, żeby w momencie gdy nastąpi literka "z". Tablica przesuwała znaki od indeksu 0. Męczę się z tym i ciągle wyświetla mi wyjątek a te ify modyfikowałem już na różne sposoby. Brak mi koncepcji. A ma być jeszcze motyw, że przy wpisaniu ujemnej cyfry program ma szyfrować wstecz. Czyli ten sam problem dla litery "a". Proszę o pomoc w jaki sposób ogarnąć aby wykonywała się pętla na tablicy?

0

Nie musisz w ogóle używać żadnej tablicy "alphabet". Każda litera w systemie jest w formie liczby, kodu ASCII. Tzn. że jak dodasz np. 1 do litery a, to otrzymasz b. Od razu, bez żadnych tablic.
Znalazłam tu przykładową implementację: http://javaprogramming.awardspace.com/index.php?pokaz=kryp1

A na marginesie, takie "zapętlanie" które chcialeś zrobić (choć jest zupełnie niepotrzebne) można uzyskać poprzez operację modulo.

0

Widziałem ten przykład, jednakże najzwyczajniej w świecie nie mogłem zrozumieć o co w nim chodzi. Teraz rozumiem. Dziękuję.
Co do operacji modulo, to próbowałem coś z tym ogarnąć, ale kompletnie nie umiem skonstruować instrukcji z jej użyciem do zapętlenia tablicy. A kombinowałem na wszystkie sposoby.

1 użytkowników online, w tym zalogowanych: 0, gości: 1