java 字符串索引超出范围 1111

标签 java

有 1102 个字符长度的编码消息传递给函数 read(),该函数对编码消息进行解码。 我已经在评论中解释了 read() 函数的工作原理。 编译成功但出现异常“String index out of range: 1111”。我不明白原因。

public class SecretMessage
{
    private String encodedMessage;

    public SecretMessage(String encodedMessage)
    {
        this.encodedMessage = encodedMessage;
    }

    /**
     * Reads every 10th letter of encodedMessage and returns a string
     * with the letters it reads.
     * @return A message hidden in the garbled text
     */
    public String read()
    {
        String decodedMessage = "";
     int lenEncode = encodedMessage.length();
     int count = 0;
     for(int i = 0; i < lenEncode; i++)
     {

        String update = encodedMessage.substring(count, count + 1);
        count = count + 10;
        decodedMessage = decodedMessage + update; 
        }
        return decodedMessage;
    }
}

最佳答案

for(int i = 0; i < lenEncode; i++)
{
    String update = encodedMessage.substring(count, count + 1);
    count = count + 10;
    decodedMessage = decodedMessage + update; 
}
return decodedMessage;
}

首先你为什么不检查i

其次,这有两个潜在的问题: 即使您使用 i 而不是 countcount + 1 也会命中高于数组中最后一个索引的数字。

此外,count = count + 10 也是您当前遇到的问题。这保证会大于 lenEncode!

关于java 字符串索引超出范围 1111,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28276582/

相关文章:

java - 如何从不同的文件加载基于 spring-boot 的 REST 应用程序属性?

java - Eclipse 自动空白禁用

java - 无法配置 Feign Client 超时

java - 为什么 Eclipse 说 null 是原始类型?

java - 向 Android Wear Activity 添加操作

Java Scanner 出现在 print() 之前

java - 如何计算mongo中引用集合的不同值

java - 引用接口(interface)创建对象

java - 无法在 Java 中运行简单的 HTTP 客户端

java - 为什么插入数据时小数点会被去掉? SQLite(Android 开发)