索引位置理解,java

索引位置理解,java,java,loops,indexing,substring,contains,Java,Loops,Indexing,Substring,Contains,我正在努力理解这段代码中发生了什么,我知道Java只有正向索引 我试图理解的例子 if ((Input.length() > 2) && (Input.substring(1, Input.length() -2).contains(substring))) { System.out.print("Middle"); 上面的代码在做什么?Java中没有负索引 让我们

我正在努力理解这段代码中发生了什么,我知道Java只有正向索引

我试图理解的例子

            if ((Input.length() > 2) &&
                (Input.substring(1, Input.length() -2).contains(substring))) {
                System.out.print("Middle");

上面的代码在做什么?

Java中没有负索引

让我们以您的示例代码为例。我对代码进行了格式化,以便更容易地查看正在发生的事情

if ((Input.length() > 2) &&
       (Input.substring(1, Input.length() - 2).contains(substring))) {
                System.out.print("Middle");
}
字段输入应为小写(输入)

if表示输入的字符串长度是否大于2,如果子字符串从位置1到位置长度,其中长度是字符串的长度,减去2

因此,如果字符串是5个字符(作为一个示例),那么它将长于2,并且子字符串将是位置1和2处的字符。长度5减去2等于3。因为3是子字符串的结束索引,所以我们将子字符串停止在位置2

使用示例字符串“ABCDE”,长度大于2,要测试(包含)的子字符串为“BC”。字符串仍然是“ABCDE”


带括号的子字符串是字符串方法。contains方法中的子字符串是包含字符串值的字段。它们是两个不同的概念,尽管名称相同。

代码中没有负面索引。子字符串的结束索引是
Input.length()-2
,它是一个正数。我不清楚你为什么用Java代码发布一个关于负索引的Java问题,正如你所说的Java不使用负索引。它不是-2,而是Input.length()-2。
Input.length()
大于2,如if语句所断言的。如果
Input.length()
为2,
2-2=0
。如果是3,
3-2=1
,依此类推。
Input.length()-2
是一个正数,因为
Input.length()
大于2。我认为减号后缺少空格会让你感到困惑。这是一个完美的例子,说明了为什么空格很重要。