Я не могу найти причину ошибки "java.lang.StringIndexOutOfBoundsException" - PullRequest
0 голосов
/ 12 апреля 2019

Мой код берет первые и последние слова пользовательского ввода и переводит их в верхний регистр.Однако, когда пользователь вводит "" или "Java" (слово без пробелов), появляется ошибка.Я не смог найти причину ошибки.

    Scanner input = new Scanner(System.in);
    String s = input.nextLine();

    String first = "";
    String last = "";

    String end = s;
    int count = 0;

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

        if (s.charAt(i) == ' ') {

            count++;

        }
        if (count == 0) {

            end = s.toUpperCase();
        }

        else if (count > 0) 

        first = s.substring(0,s.indexOf(' '));
        last = s.substring(s.lastIndexOf(' ')+1);

        end = (first.toUpperCase() + " " + s.substring(first.length()+1,s.indexOf(last)) + " " +last.toUpperCase());

    }


    System.out.println(count);

1 Ответ

2 голосов
/ 12 апреля 2019
String first = s.substring(0,s.indexOf(' '));
String last = s.substring(s.lastIndexOf(' ')+1);

Ваш код вызывает проблему. Если в вашем String нет пробела, то indexOf(' ') вернет -1. Вы, очевидно, не можете подстроку между 0 и -1. Вы должны проверить, присутствует ли ' ' в String, прежде чем его подстроковать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...