我正在尝试运行以下代码
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;
}
Run Code Online (Sandbox Code Playgroud)
每次运行代码时,当计数器变量= 1时,我得到一个java.lang.ArrayIndexOutOfBoundsException.检查调试器中的代码,当它应该返回inputString中的第二个字符时,子串会返回一个空字符串.
任何人都可以建议为什么会这样?
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;
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您还可以避免创建子字符串.这会给你相同的结果:
for (a = 0; a <= 255; a++)
{
ctmp = inputString.charAt(a % intLength);
sbox[a] = ctmp;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7875 次 |
| 最近记录: |