Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Java код в чём ошибка?

Даниил Ниязов Ученик (96), на голосовании 5 месяцев назад
public class Main {

public static void main(String[] args) {

String s = "XYZXYZYXXYXZXZXZXY";

int rez = 0;

for (int i = 0; i < s.length(); i++) {

if (("" + s.charAt(i) + s.charAt(i + 1)).equals("XY")) {

rez++;

}

}

System.out.println(rez);

}

}
Голосование за лучший ответ
Mr.Hale Профи (825) 6 месяцев назад
Вам нужно добавить проверку, чтобы не выходить за пределы строки.
Даниил НиязовУченик (96) 6 месяцев назад
не много не понял
Mr.Hale Профи (825) Даниил Ниязов,
 public class Main { 
    public static void main(String[] args) { 
        String s = "XYZXYZYXXYXZXZXZXY"; 
        int rez = 0; 
        for (int i = 0; i < s.length() - 1; i++) { // Чекни
            if (("" + s.charAt(i) + s.charAt(i + 1)).equals("XY")) { 
                rez++; 
            } 
        } 
        System.out.println(rez); 
    } 
} 
RatÆCat Оракул (57717) 6 месяцев назад
В условии вы пытаетесь обратиться к несуществующему элементу. Когда вы до ходите до последнего элемента, т.е. до i - ого, то i+1- ого не существует
morgan freeman Знаток (481) 6 месяцев назад
Проблема заключается в строке, где вы пытаетесь получить символ, следующий за текущим в строке:

```java
if (("" + s.charAt(i) + s.charAt(i + 1)).equals("XY")) {
```

Эта строка вызовет ошибку `StringIndexOutOfBoundsException`, потому что вы пытаетесь получить символ с индексом `i + 1` даже после достижения последнего символа строки `s`.

Чтобы избежать этой ошибки, вам нужно изменить ваш цикл так, чтобы он завершался на один символ раньше, чтобы избежать обращения к символу, следующему за последним в строке. Вы можете сделать это, например, изменением условия в цикле `for`:

```java
for (int i = 0; i < s.length() - 1; i++) {
```

Таким образом, ваш исправленный код будет выглядеть так:

```java
public class Main {

public static void main(String[] args) {

String s = "XYZXYZYXXYXZXZXZXY";

int rez = 0;

for (int i = 0; i < s.length() - 1; i++) {

if (("" + s.charAt(i) + s.charAt(i + 1)).equals("XY")) {

rez++;

}

}

System.out.println(rez);

}

}
```
Даниил НиязовУченик (96) 6 месяцев назад
Спасибо
morgan freeman Знаток (481) Даниил Ниязов, Пожалуйста:)
Александр Искусственный Интеллект (301561) 6 месяцев назад
 public class Main { 
public static void main(String[]args) {
String s = "XYZXYZYXXYXZXZXZXY";
int rez = 0;
for (int i = 0; i < s.length(); i++) {
try {
if (("" + s.charAt(i) + s.charAt(i + 1)).equals("XY")) {
rez++;
}
} catch(Exception e) { }
}
System.out.println(rez);
}
}
Похожие вопросы