Нужно проверить пустые ли строки. Выходит StringIndexOutOfBoundsException и тест выдает fail

public class PairsCharString {
    public static boolean check(String l, String r) {
        boolean rsl = false;
        char rslFirstL = l.charAt(0);
        char rslLastR = r.charAt(r.length() - 1);
        char rslLastL = l.charAt(l.length() - 1);
        char rslFirstR = r.charAt(0);
        if (l.isEmpty() && r.isEmpty()) {
            rsl = true;
        } else if ((rslFirstL == rslLastR) && (rslLastL == rslFirstR)) {
            rsl = true;
        }
        return rsl;
    }
}

public class PairsCharStringTest {

    @Test
    public void checkTrue() {
        boolean rsl = PairsCharString.check("", "");
        assertThat(rsl, is(true));
    }

    @Test
    public void checkTrue1() {
        boolean rsl = PairsCharString.check("sparkling", "groups");
        assertThat(rsl, is(true));
    }

    @Test
    public void checkFalse() {
        boolean rsl = PairsCharString.check("booking", "grabber");
        assertThat(rsl, is(false));
    }
}

Ответы (1 шт):

Автор решения: Agzam4

Обязательно измените класс PairsCharString:

public class PairsCharString {
    
    public static boolean check(String l, String r) {
        return l.isEmpty() && r.isEmpty() || // Если две строки пусты - true
                !(l.isEmpty() || r.isEmpty()) && // Если одна пустая, а другая нет - false
                 // Если первая буква первой строки равна последней букве второй строки и  последняя буква первой строки равна первой букве второй строки: 
                (l.charAt(0) == r.charAt(r.length() - 1)) && 
                (l.charAt(l.length() - 1) == r.charAt(0));
    }
    
}

Если все еще не работает, то измените класс PairsCharStringTest и на это:

public class PairsCharStringTest {

    public static void main(String[] args) {
        boolean rsl1 = PairsCharString.check("", "");
        rsl1 = PairsCharString.check("", "1");
        System.out.println(rsl1);
        boolean rsl2 = PairsCharString.check("sparkling", "groups");
        System.out.println(rsl2);
        boolean rsl3 = PairsCharString.check("booking", "grabber");
        System.out.println(rsl3);
    }
}
→ Ссылка