【问题标题】:Finding the first index of a vowel in a given string, otherwise return -1 if there aren't any在给定字符串中查找元音的第一个索引,如果没有则返回 -1
【发布时间】:2018-04-20 12:37:43
【问题描述】:

所以我正在尝试为编码考试练习手写代码,其中一个示例问题是查找给定字符串中第一个元音的索引,如果没有,则返回 -1。

我尝试将其放入 Eclipse 并对其进行调试。我不明白为什么这不起作用。我不断得到 101 作为输出。最初我没有使用索引变量,我让 if 语句返回 word.charAt(i)。我尝试改变它,但它没有做任何事情。

(出于考试目的,他们希望我们只使用小写元音)

另外,如果你必须写这个,写这个更简单的方法是什么?

public static int firstVowel(String word) {
    for (int i = 0; i < word.length(); i++) {
        int index;

        if (word.charAt(i) == 'a' || word.charAt(i) == 'e' || word.charAt(i) == 'i' || word.charAt(i) == 'o'
                || word.charAt(i) == 'u') {
            index = word.charAt(i);
            return index;
        }
    }

    return -1;

}

【问题讨论】:

  • String.indexOf 将使您的代码更具可读性。
  • 我会把它放在我的 if 语句中吗?我想我以前没用过。
  • 不,代码将缩小到(伪代码)min( indexOf('a'), indexOf('e') ... )。然而,这样的min 方法是没有预定义的(Math.min() 只接受两个参数,这将导致括号的大量嵌套)。因此,您必须为单个字符保护-1,这很可能会导致代码更难以阅读。

标签: java string loops indexing


【解决方案1】:

你得到了 char 的 int 表示,你实际上想要返回 i,因为这显示了你找到 char 的位置。

【讨论】:

    【解决方案2】:

    这里的问题是您将返回字符值的 word.charAt(i) 存储到存储整数的索引中。

    我相信,当您将 char 值存储在整数变量中时,您真正存储的是字符的 ASCII 值。 101 代表 ASCII 表上的“e”,所以这里发生的是您在索引 i 处检测到一个“e”,然后将其 ASCII 值存储在索引中并返回索引。

    要解决您的问题,您根本不需要索引变量。您只需在 if 语句中返回 i。

    【讨论】:

      猜你喜欢
      • 2017-02-23
      • 1970-01-01
      • 2015-10-07
      • 2020-07-06
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      相关资源
      最近更新 更多