有 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
而不是 count
,count + 1
也会命中高于数组中最后一个索引的数字。
此外,count = count + 10
也是您当前遇到的问题。这保证会大于 lenEncode
!
关于java 字符串索引超出范围 1111,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28276582/