Witam ponownie,
Mam problem z rozwiązaniem pewnego problemu. Bardzo proszę o pomoc:
Program pobiera od użytkownika napis. Znaki o parzystym indeksie zwiększa o 10 a nieparzyste o 5 (zgodnie z ASCII).
Program który napisałem na pewną wadę:) jeżeli podam np. ab to wyświetli kg- czyli ok. Problem zaczyna się kiedy podam kilka razy ta samą literę, np. abab. W tym wypadku przeskakuje odpowiednio o 20 i 10 (zamiast 10 i 5). Jak podam ababab to przeskakuje o 30 i 15.
Bardzo proszę o pomoc. Nie proszę jednak o podanie innego sposobu napisania programu, a jedynie o wyjaśnienie dlaczego mój kod tak działa.
Scanner scan = new Scanner(System.in);
String napis;
System.out.println("Podaj napis:");
napis = scan.nextLine();
for(int i = 0; i < napis.length(); i++){
if((i % 2) == 0){
char ch = napis.charAt(i);
ch += 10;
napis = napis.replace(napis.charAt(i), ch);
}
else{
char ch = napis.charAt(i);
ch +=5;
napis = napis.replace(napis.charAt(i), ch);
}
}
System.out.println("Zmieniony napis: "+napis);
Ponadto dołączam jeszcze jedno pytanie:
czym się różnią poniższe zapisy i dlaczego pierwszy nie działa, a drugi tak:
//zapis 1
String napis = "napis";
char ch = napis.charAt(1) + 10;
// zapis 2
String napis = "napis";
char ch = napis.charAt(1);
ch += 10;