java - 与字符串方法 .indexOf() Java 混淆的结果

标签 java substring indexof

我目前正在学习 AP 计算机科学考试学习指南,但我遇到了其中一个问题。

    String s = "mathematics";
    String vowels = "aeiou";
    int number = 0;
    for(int i = 0;i<s.length();i++){
        number += s.indexOf(vowels.substring(0));
    }

代码执行后number的值是多少?我得出的结论是11,因为元音的第一个索引是“a”,所以a第一次出现在s中是在索引1处。经过11次循环后,结果将是11。但是对于出于某种原因,正确答案是-11。我可以理解它是如何为负的,因为只要在字符串中找不到它,它就会返回 -1 。但我完全不明白为什么会在这种情况下发生。如有任何帮助,我们将不胜感激!

最佳答案

首先,认识到 vowels.substring(0) 不执行任何操作。从位置 0 开始的子字符串相当于字符串本身。

字符串元音“aeiou”不会出现在“mathematics”中的任何位置,因此indexOf code> 将返回 -1 11 次("mathematics" 的长度为 11)。因此,最后number的结果是-11

虽然还不清楚你到底想要什么,但如果你想获取字符串 s 中每个元音的位置,你必须重写你的 for 循环并使用 charAt(i)substring(i, i + 1)

关于java - 与字符串方法 .indexOf() Java 混淆的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22520137/

相关文章:

带有英文和中文文本的java字符串

javascript - 使用indexOf()在ng-repeat中搜索数组

java - Eclipse插件开发: How to jump to Marker in the Source View from Problems View?

java - Spring Statemachine 状态操作与转换操作

java - Circle 不会在 JavaFX 中移动位置

java - Capicom 和 SHA1 - 帮助将 Java 代码转换为 Delphi

mysql - 如何在 MySQL 中选择文件名的子字符串?

java - java中提取在某个字符串之前结束的子字符串

javascript - 如何返回包含值的索引列表

javascript - 如何获取从字符串末尾开始计数的indexof()