我正在尝试运行以下代码
int[] sbox = new int[256];
String inputString = "Thisisanexample";
String sTemp;
char cTmp;
int intLength = inputString.length();
for (a = 0; a <= 255; a++)
{
sTemp = inputString.substring(a % intLength, 1);
ctmp = sTemp.toCharArray()[0];
sbox[a] = (int)ctmp;
}
每次我运行代码时,当计数器变量 = 1 时,我都会得到一个 java.lang.ArrayIndexOutOfBoundsException。检查调试器中的代码,它似乎返回一个空字符串,而它应该返回输入字符串。
谁能告诉我为什么会这样?
最佳答案
String.substring() 需要一个开始和结束索引,而不是长度。所以你需要将长度添加到起始索引:
for (a = 0; a <= 255; a++)
{
int index = a % intLength;
sTemp = inputString.substring( index, index + 1 );
ctmp = sTemp.toCharArray()[0];
sbox[a] = (int)ctmp;
}
在这种情况下,您还可以避免创建子字符串。这会给你相同的结果:
for (a = 0; a <= 255; a++)
{
ctmp = inputString.charAt(a % intLength);
sbox[a] = ctmp;
}
关于Java String.substring 返回空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6203696/