Java String.substring 返回空字符串

标签 java

我正在尝试运行以下代码

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/

相关文章:

java - 将更改监听器注册到 javafx 中的节点组

java - 无法解析导入 com.perfectomobile.selenium

java - Struts2参数到javascript

java - @ResponseBody选择不同的响应格式

java - JavaCC语法中的try-catch block

java - 预定作业中的 Spring 应用程序 URL

java - Lombok 的@SuperBuilder-错误Java : cannot find symbol

java - 如何将变量传递给 Runnable?

java - 使用 Hibernate、Spring、Struts 2 在 View 模式中打开 session

java - 如何将用户的 Google 帐户照片直接上传到 Firebase 存储?