Błąd w indeksie tablicy

0

Nie wiem dlaczego jak wpisuje wartość do programu 0101 to otrzymam PP (działa dobrze) gdy nagle zmienię na 1111 to otrzymuje błąd: "java.lang.ArrayIndexOutOfBoundsException" a powinienem otrzymać II. Proszę o jakieś wskazówki w czym tkwi błąd.

import java.util.Scanner;
import java.util.Arrays;
import java.util.ArrayList;

public class dekod{
	public static void main(String args[]){
	Scanner odczyt= new Scanner(System.in);
	String liczba = odczyt.nextLine();
	char[] napis=liczba.toCharArray();
	
	int n= napis.length;
	int j=0;
	
	ArrayList<String> wynik = new ArrayList<String>();
	while(j<=n-1){
	
	if(napis[j] =='1' && napis[j+1] =='1')
		{wynik.add("I");
		j=j+2;
		}
	if(napis[j] =='0' && napis[j+1] =='1')
		{wynik.add("P");
		j=j+2;
		}
		}
	for(String s:wynik){
	System.out.print(s);
	}
	
	}
	
	}

dodanie znacznika <code class="java"> - @furious programming

0

W przypadku 1111 wygląda to tak, że wchodzisz do pierwszego if'a i zwiększasz j na 2. Potem wchodzisz do drugiego if'a i sprawdzasz czy indeks 2 ='0' i indeks 3 = '1' potem drugie wykonanie pętli while. Sprawdzasz dla indeksu 2 i 3 pierwszego if'a i zgadza się on więc wpisujesz do tablicy drugą literę 'I' i zwiększasz j na 4. Potem wchodzisz do drugie if'a i tam sprawdzasz czy indeks i numerze 4 = '0'. Tutaj masz Twój błąd.

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