Задача состоит в том, чтобы найти и напечатать подстроку наибольшей длины из одинаковых символов. Выдает ошибку, не могу понять, почему происходит выход за пределы массива во втором цикле. Код::
import java.io.*;
import java.util.ArrayList;
import java.lang.String;
import java.util.Scanner;
import java.util.Arrays;
public class Solution {
public void Substring() {
System.out.println("Enter string");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
ArrayList<String> arr = new ArrayList<>(Arrays.asList(str.split(" ")));
for (int i = 0; i < arr.size(); i++) {
{
int number = arr.get(i).length();
for (int q = 0; q < arr.get(i).length(); q++) {
if (arr.get(i).charAt(q) == arr.get(i).charAt(q + 1)) {
q++;
if (q == number - 1) {
System.out.println(arr.get(i));
}
} else {
i++;
}
}
}
}
}
}
Я мельком пробежался по коду. Вероятно, что в этой строке:
(arr.get(i).charAt(q) == arr.get(i).charAt(q + 1))
Допустим мы сделаем line= arr.get(i);
по идее line
это и есть массив символов, а charAt()
достает из массива символ. так вот, что будет, когда дойдет до последнего символа линии ( q=arr.get(i).length? (arr.get(i).charAt(q) == arr.get(i).charAt(q + 1))
у тебя сравнит последний символ с последний +1
, а его нету. Поменяй в эту строку
for (int q = 0; q < arr.get(i).length(); q++) {
на эту
for (int q = 0; q < arr.get(i).length()-1; q++) {
Но это не точный ответ)
В цикле есть строка q++
А в условии цикла и так есть q++ Вот в момент прохода по строке и получается что код пытается обратиться к символу которого уже нет в самой строке.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как передать переменную из Phonegap 7 JS в Android Java? Я читал на SO анлгоязычные решения, но многие они либо старые, либо просто не подходят в моём случае
Мой тул заменяет текст файлов (их название и/или содержимое)Собственно для этих целей мне нужно, как иметь возможность выбирать название...
При попытке создать фрагмент внутри DialogFragment приложение вылетает, а в стэктрэйсе такое описание проблемы: