【问题标题】:How to know what the outcome of indexOf("character", integer) will be?如何知道 indexOf("character", integer) 的结果是什么?
【发布时间】:2023-03-30 01:12:01
【问题描述】:

我不明白为什么 name.indexOf("d",4) 在我的程序中打印 8。我尝试用“d”替换其他字母,但它似乎总是打印一个随机数,而且我看不到任何模式来理解indexOf("character", integer) 实际在做什么,以及它是如何产生输出的。

import java.util.Scanner;
public class Practice {

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    String name;
    name = "abcdefghd";

    System.out.println(name.indexOf("d"));//3
    System.out.println(name.indexOf("cde"));//2
    System.out.println(name.indexOf("fe"));//-1
    System.out.println(name.indexOf("d", 4));//8
}

【问题讨论】:

  • 你读过它的javadoc吗?
  • 这个问题似乎离题了,因为它是通过简单查看标准文档来回答的。
  • 看在上帝的份上,不要试图猜测方法的作用。 你不能扔一只死猫不打 Java API 文档并给出正确的解释......
  • 虽然从经验丰富的专业人士的角度来看,这很容易,但这是一个写得很好的问题,有一个很好、简洁的代码示例演示了这个问题。投票重新打开这篇文章。
  • 重新开放选民,详情请见meta.stackexchange.com/questions/3251/…

标签: java char indexof


【解决方案1】:

String#indexOf(String, int) 方法在指定的int 处或之后的索引处查找指定的String

所以

System.out.println(name.indexOf("d", 4));//8

name = "abcdefghd";
            ^ index 4

它开始在String 的索引4 处寻找"d",即。在索引 3 处的 "d" 之后。索引 8 中有一个 "d"

【讨论】:

    【解决方案2】:

    返回的值不是随机的,在documentation这里有解释:

    返回此字符串中第一次出现指定子字符串的索引,从指定索引开始。

    返回的索引是k >= fromIndex && this.startsWith(str, k) 对应的最小值k。如果不存在这样的 k 值,则返回 -1。

    以防万一:记住在 Java 中索引从 0 开始。

    【讨论】:

      猜你喜欢
      • 2019-08-21
      • 2013-01-31
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 2012-12-13
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      相关资源
      最近更新 更多