【问题标题】:Index position understanding, java索引位置理解,java
【发布时间】:2020-11-28 15:57:58
【问题描述】:

我很难理解这段代码中发生了什么,我知道 Java 只有正索引。

我试图理解的示例。

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

上面的代码在做什么?

【问题讨论】:

  • 您的代码中没有负索引。您的子字符串的结束索引是Input.length()-2,这是一个正数。我不清楚你为什么要发布一个关于负索引的 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。
  • 我认为减号后缺少空格会让您感到困惑。这是为什么空白很重要的一个完美例子。

标签: java loops indexing substring contains


【解决方案1】:

Java 中没有负索引。

让我们以您的示例代码为例。我已经对代码进行了格式化,以便更容易看到发生了什么。

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

输入字段应为小写(输入)。

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

因此,如果字符串是 5 个字符(例如),它将比 2 长,子字符串将是位置 1 和 2 的字符。5 减去 2 的长度得到 3。因为 3 是结束索引子串,我们将子串停在位置 2。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 2017-10-19
    相关资源
    最近更新 更多