我找不到“ java.lang.StringIndexOutOfBoundsException”错误的原因

时间:2019-04-11 21:02:04

标签: java string for-loop

我的代码将用户输入的首尾两个单词转换为大写。但是,当用户输入“”或“ 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 个答案:

答案 0 :(得分:2)

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

您的代码在这里引起了问题。如果您的String中没有空格,那么indexOf(' ')将返回-1。您显然不能在0到-1之间进行子字符串化。您需要先对' '中是否存在String进行子字符串化。