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

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

Даниил Ниязов Ученик (96), на голосовании 10 месяцев назад
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 Профи (833) 12 месяцев назад
Вам нужно добавить проверку, чтобы не выходить за пределы строки.
Даниил НиязовУченик (96) 12 месяцев назад
не много не понял
Mr.Hale Профи (833) Даниил Ниязов,
 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 Оракул (81764) 12 месяцев назад
В условии вы пытаетесь обратиться к несуществующему элементу. Когда вы до ходите до последнего элемента, т.е. до i - ого, то i+1- ого не существует
morgan freeman Знаток (481) 12 месяцев назад
Проблема заключается в строке, где вы пытаетесь получить символ, следующий за текущим в строке:

```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) 12 месяцев назад
Спасибо
morgan freeman Знаток (481) Даниил Ниязов, Пожалуйста:)
Александр Искусственный Интеллект (309703) 11 месяцев назад
 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);
}
}
Похожие вопросы