java string.Substring StringIndexOutOfBoundsException 循环内

标签 java android

有人可以解释一下吗?这是代码示例:使用参数调用函数:“S26V5”

private String uniqueCode(String inp) 
{
  String index = "023456789ABCDEFGHJKLMNOPQRSTUVWXYZ";
  int basse = index.length();
  String outt = "";
  inp = new StringBuilder(inp).reverse().toString();
  double oout = 0;
  int lenn = inp.length() - 1;
  Log.d("nom", "String inp lenght:" + Integer.toString(lenn));
    for (int i = 0; i <= lenn; i++)
    {
        double pow = Math.pow(basse, lenn - 1);
        Log.d("nom", "i=" + Integer.toString(i));
        Log.d("nom1",inp.substring(i, 1));
        Log.d("nom2", Integer.toString(index.lastIndexOf(inp.substring(i, 1))));
        oout += index.lastIndexOf(inp.substring(i, 1)) * pow;
    }
  outt = Double.toString(oout); //oout.ToString("F2");
  outt = outt.substring(0, outt.lastIndexOf('.'));
  outt = outt.substring(3);
  return outt;
}

这是来自 logcat 的日志:

nom(2597): String inp lenght:4 <- Ok, string lenght
nom(2597): i=0 <- first iteration
nom1(2597): 5 <- inp.substring(i, 1) first time
nom2(2597): 4 <- index.lastIndexOf(.... first time
nom(2597): i=1 <- second iteration and 
nom2(2597): 34 <- next is index.lastIndexOf(....
nom(2597): i=2
AndroidRuntime(2597): Shutting down VM
W/dalvikvm(2597): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
E/AndroidRuntime(2597): FATAL EXCEPTION: main
E/AndroidRuntime(2597): java.lang.StringIndexOutOfBoundsException: length=5; regionStart=2; regionLength=-1
E/AndroidRuntime(2597):     at java.lang.String.startEndAndLength(String.java:593)
E/AndroidRuntime(2597):     at java.lang.String.substring(String.java:1474)
E/AndroidRuntime(2597):     at Bar.Man.BarManActivity.uniqueCode(BarManActivity.java:750)

问题是:为什么在第二次迭代中没有打印 inp.substring(i, 1) ? 我不断收到StringIndexOutOfBoundsException。我的代码有什么问题吗?

最佳答案

参见substring(int beginIndex, int endIndex) :

IndexOutOfBoundsException -

if the beginIndex is negative, or endIndex is larger than the length of this String object, or beginIndex is larger than endIndex.

i > 1 时,inp.substring(i, 1) 会失败。

关于java string.Substring StringIndexOutOfBoundsException 循环内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19910791/

相关文章:

java - Runtime.exec() 是否允许用户输入?

java - 验收测试遗留代码

java - 如何从 Android 应用程序中的按钮获取文本

Android 应用程序内存不足错误,尝试使用 88kb 图像

用于 htc 渴望高清的 android usb adb 驱动程序

android - 从服务启动 View ?

android - PagerAdapter 的页面更改回调

java - 能用javassist抓取一个项目中的所有类吗?

java - 如何在使用 JTA 实体管理器时插入一些数据

java - 将 JTextField 或 JComboBox 的光标移动到开头