首页 > 解决方案 > 我找不到“java.lang.StringIndexOutOfBoundsException”错误的原因

问题描述

我的代码采用用户输入的第一个和最后一个单词并将它们转换为大写。但是,当用户输入“”或“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);

标签: javastringfor-loop

解决方案


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

您在此处的代码导致了问题。String如果您的then中不存在空格,indexOf(' ')则将返回 -1。您显然不能在 0 和 -1 之间进行子字符串化。在子串之前,您需要检查是否' '存在。String


推荐阅读