我在网上看到一些与树图有关的代码,对此感到好奇和 想知道在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);
答案 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%.
^