indexOf()方法中'%'的用途是什么?

时间:2019-04-02 10:33:03

标签: java

我在网上看到一些与树图有关的代码,对此感到好奇和 想知道在indexOf()方法中使用'%'参数。

这是代码行:

     Scanner scanner = new Scanner( dataFile );
        while (scanner.hasNextLine()) {
           String phoneEntry = scanner.nextLine();
           int separatorPosition = phoneEntry.indexOf('%');
           if (separatorPosition == -1)
              throw new IOException("File is not a phonebook data file.");
           name = phoneEntry.substring(0, separatorPosition);
           number = phoneEntry.substring(separatorPosition+1);
           phoneBook.put(name,number);

1 个答案:

答案 0 :(得分:0)

引用String#indexOf(int ch) java doc

  

返回指定字符首次出现在该字符串中的索引。如果在此ch对象表示的字符序列中出现了值为String的字符,则将返回第一个此类出现的索引(以Unicode码为单位)。对于ch的值,其范围是0到0xFFFF(包括0),这是最小值 k ,这样:

this.charAt(k) == ch
     

是真的。对于ch的其他值,它是最小值 k ,这样:

this.codePointAt(k) == ch
     

是真的。无论哪种情况,如果此字符串中均未出现此类字符,则返回-1。

因此,您已经有了。 phoneEntry.indexOf('%')将返回%的字符串值中第一个字符phoneEntry的索引。因此,例如,如果phoneEntry保留字符串值"50% of 50% is 25%.",则结果将是2,它是此字符串中第一个%的从0开始的索引:

50% of 50% is 25%.
  ^

如果字符串phoneEntry不包含%,则将得到-1

在这种情况下,'%'只是作为.indexOf方法的参数而给出的字符。如果您改用phoneEntry.indexOf('s'),则结果12将具有相同的字符串值:

50% of 50% is 25%.
            ^