java - 如何修复字符串索引超出范围 : -1

标签 java string

我一直在研究一种生成密码的方法,该方法会将每个“S”更改为 $。

请注意,我从另一个类中获取短语,它总是大于 8 个字符

    String key;
    String store;
    key = phrase.substring(0,1).toUpperCase();
    phrase = key + phrase.substring(1,phrase.length());
    System.out.println(phrase);
    System.out.println(phrase.length());
    for(int i = phrase.length(); i>0; i--) {
        int sKey = phrase.indexOf('S');
        store = "$" + phrase.substring(sKey+1,phrase.length());
        phrase =phrase.substring(0,sKey)+store;
        System.out.print(phrase);
    }
}

但是之后总是会出现这个错误

Exception in thread "main" Te$taaaajava.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(Unknown Source)
    at edu.ilstu.Security.generatePassword(Security.java:15)
    at edu.ilstu.SecurityApp.main(SecurityApp.java:57)

最佳答案

索引超出范围异常值 -1 表示未找到请求的符号,在本例中为 S。

关于java - 如何修复字符串索引超出范围 : -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58550223/

相关文章:

java - iText 变音符号(例如 D̂、M̂ 等)无法在 PDF 上正确显示

string - 如何在 Apple Swift 中定义一个新的 "String"类型?

javascript - 通过正则表达式 javascript 拆分字符串

php - 一个从 php 中的字符串返回数字的简单函数

java - 字符串排列

java - 当我尝试使用 WHERE 子句时出现异常

Java:lambda 和方法引用是否有不同的执行时间?

java - 从另一个项目访问 PDF 文件

java - GWT MVP 历史 回来

java - "new String()"也是不可变的吗?