Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java子字符串未按预期工作_Java_String_Substring - Fatal编程技术网

java子字符串未按预期工作

java子字符串未按预期工作,java,string,substring,Java,String,Substring,我试图在java中使用substring函数,但它总是抛出一个错误,我想知道为什么?从逻辑上讲,代码似乎很好,但为什么会抛出这个错误呢 Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1 我在文档中读到的子字符串采用2参数 substring(whereIwantToStart,howManyCharactersToshow) 下面是我的代码

我试图在java中使用substring函数,但它总是抛出一个错误,我想知道为什么?从逻辑上讲,代码似乎很好,但为什么会抛出这个错误呢

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
我在文档中读到的子字符串采用2参数

substring(whereIwantToStart,howManyCharactersToshow)
下面是我的代码

    String test = "160994";
    System.out.println(test.substring(2,1)); //output should be 09 why error?
有人能给我解释一下怎么了吗?请给我解释一下。谢谢:)

请参阅:

公共字符串子字符串(int beginIndex、int endIndex)

返回作为此字符串的子字符串的新字符串。子字符串从指定的beginIndex开始,然后 扩展到索引endIndex-1处的字符。因此,长度 子字符串是endIndex beginIndex

您需要
“160994”。子字符串(2,4)
才能获得
09

请参见:

公共字符串子字符串(int beginIndex、int endIndex)

返回作为此字符串的子字符串的新字符串。子字符串从指定的beginIndex开始,然后 扩展到索引endIndex-1处的字符。因此,长度 子字符串是endIndex beginIndex


您需要
“160994”。子字符串(2,4)
才能获得
09

这是java中子字符串的格式

public String substring(int beginIndex, int endIndex)
您正在指定从索引2开始到索引1结束,这就是它将异常索引抛出范围之外的原因

要获得所需的输出

 System.out.println(test.substring(2,4));

附录-Java文档这是Java中子字符串的格式

public String substring(int beginIndex, int endIndex)
您正在指定从索引2开始到索引1结束,这就是它将异常索引抛出范围之外的原因

要获得所需的输出

 System.out.println(test.substring(2,4));

附录-Java文档

结束索引应大于开始索引。要获得“09”的输出,您应该将结束索引提供为4
test.substring(2,4)

返回作为此字符串的子字符串的新字符串。
子字符串从指定的
beginIndex
开始并扩展 到索引
endIndex-1
处的字符

因此,子字符串的长度是
endIndex beginIndex

StringIndexOutOfBoundsException
将在以下情况下抛出

  • beginIndex<0
  • endIndex>value.length
  • endIndex-beginIndex<0

  • 结束索引应大于开始索引。要获得“09”的输出,您应该将结束索引提供为4
    test.substring(2,4)

    返回作为此字符串的子字符串的新字符串。
    子字符串从指定的
    beginIndex
    开始并扩展 到索引
    endIndex-1
    处的字符

    因此,子字符串的长度是
    endIndex beginIndex

    StringIndexOutOfBoundsException
    将在以下情况下抛出

  • beginIndex<0
  • endIndex>value.length
  • endIndex-beginIndex<0

  • 对于您所需的输出使用-

    System.out.println(test.substring(2,4)); 
    

    对于您所需的输出使用-

    System.out.println(test.substring(2,4)); 
    

    公共字符串子字符串(int-startIndex,int-endIndex)
    :此方法将包含给定字符串的子字符串的新字符串对象从指定的startIndex返回到endIndex

    让我们通过下面给出的代码来理解startIndex和endIndex

    String s="hello";  
    System.out.println(s.substring(0,2)); 
    
    输出:
    he

    注意:

    endIndex>startIndex

    在您的情况下:在1和2个位置之间切换到

    String test = "160994";
    System.out.println(test.substring(2, 4)); //output should be 09
    

    输出:
    09

    公共字符串子字符串(int-startIndex,int-endIndex)
    :此方法从指定的startIndex到endIndex返回包含给定字符串子字符串的新字符串对象

    让我们通过下面给出的代码来理解startIndex和endIndex

    String s="hello";  
    System.out.println(s.substring(0,2)); 
    
    输出:
    he

    注意:

    endIndex>startIndex

    在您的情况下:在1和2个位置之间切换到

    String test = "160994";
    System.out.println(test.substring(2, 4)); //output should be 09
    
    输出:
    09

    String test=“160994”

    系统输出println(测试子串(2,1))

    子字符串表示(beginIndex,endIndex)和endIndex应大于beginIndex。并且您的值(09)应介于beninIndex(起始索引)和endIndex(最后一个索引)之间

    您已经获取了endIndex 1,因此您得到了错误,因为您的beginIndex大于endIndex

    如果你想得到Ans.09,那么你应该把endIndex设置为4

    行为:-系统输出打印LN(测试子字符串(2,4))

    String test=“160994”

    系统输出println(测试子串(2,1))

    子字符串表示(beginIndex,endIndex)和endIndex应大于beginIndex。并且您的值(09)应介于beninIndex(起始索引)和endIndex(最后一个索引)之间

    您已经获取了endIndex 1,因此您得到了错误,因为您的beginIndex大于endIndex

    如果你想得到Ans.09,那么你应该把endIndex设置为4


    行为:-系统输出打印LN(测试子字符串(2,4))

    提示:所有Java库类和方法都有很好的文档记录。您不应该只是调用一个方法,而应该始终首先阅读该文档。在不知道其参数含义的情况下调用方法是没有意义的。文档中的示例:“hamburger”。子字符串(4,8)返回“敦促”“微笑”。子字符串(1,5)返回“英里”可能的副本。您是否可以提供这样的文档:“子字符串接受2个参数子字符串(我想从何处开始,有多少个字符显示)”?你必须仔细阅读文档,但不要感到沮丧,实践使你成为大师。小提示:如果您使用的是eclipse,可以在“test”之前按CTRL+space,以显示提供上下文、文档和完成选项的内容辅助。祝你好运。提示:所有Java库类和方法都有很好的文档记录。您应该始终首先阅读该文档,而不是仅仅调用方法。在不知道方法参数的含义的情况下调用方法是没有意义的