【问题标题】:How do you use charAt with an array?如何将 charAt 与数组一起使用?
【发布时间】:2018-07-23 05:04:44
【问题描述】:

我在用数组实现 charAt 时遇到了一些麻烦。我是 Java 初学者(我想这是我唯一的编码经验)。

目标:创建一个程序,用户输入任何字符串,输出中记录元音的总数(区分大小写)

示例: 输入:字符 输出: a = 1 A = 1 e = 1

import java.util.Scanner;
public class HW5 {
public static void main(String[] args) {
String [] alphabets = 
{"aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ"};
String vowels = "aAeEiIoOuU";
int found = 0;
Scanner sc = new Scanner(System.in);
System.out.print("Please enter any word: ");
String inputStr = sc.nextLine();
for(int i=0;i<alphabets.length;i++)
    {
        if(alphabets.charAt[i] == vowels)

*注意:程序未完成。

【问题讨论】:

标签: java arrays charat


【解决方案1】:

您需要检查inputStr 的每个字符(不知道alphabets 在您的代码中是什么意思),看看是否可以在vowels 字符串中找到它。

    String vowels = "aAeEiIoOuU";
    int found = 0;
    Scanner sc = new Scanner(System.in);
    System.out.print("Please enter any word: ");
    String inputStr = sc.nextLine();
    for (int i = 0; i < inputStr.length(); i++) {
        if (vowels.indexOf(inputStr.charAt(i)) >= 0) {
            found += 1;
        }
    }

【讨论】:

  • 其实我有一个简单的问题。如何打印结果?会是 System.out.print(found)
【解决方案2】:

如果您在理解方法或类时遇到困难,documentation 会很有帮助。

话虽如此,有很多方法可以计算字符串中的元音。

您的输出表明您需要每个案例中每个元音的计数,而不仅仅是所有元音的计数。为此,您需要一张地图来跟踪。

考虑类似

String input = "A string with vowels in it";
Map<Character, Integer> counts = new HashMap<≥();
for (int i = 0; i < input.length; i++) {
    char c = input.chart(i);
    if (c == 'a') {
        int tmp = counts.getOrDefault('a', 0);
        tmp++;
        counts.put('a', tmp);
    } else if (c == 'A') {
        // same logic as above for uppercase A
    } // other else if statements for e, E, i, I, o, O, u, U
}

// the map has all counts per vowel / case

在地图完成所有计数后,您可以迭代其条目集以打印您需要的输出

for (Map.Entry<Character, Integer> e : counts. entrySet()) {
    System.out.println(e.getKey() + " = " + e.getValue());
}

如果您只需要值的数量而不将其分解为哪些元音,请考虑类似(未测试)

String vowels = "AaEeIiOoUu";
String input = "Hello World!";
int numVowels = 0;
for (int i = 0; i < input.length; i++) {
    char c = input.charAt(i);
    if (vowels.indexOf(c) >= 0) {
        numVowels++;
    }
}

// do something with numVowels

--

将问题分解为简单的步骤

  1. 定义要查找的元音
  2. 初始化计数器变量 (numVowels)
  3. 遍历输入字符串,并根据 1 中定义的字符(元音)检查每个字符。
  4. 对于找到的每个元音,递增计数器变量。

【讨论】:

  • 你试过了吗?它对你有用吗?如果是,请考虑将答案标记为已接受。
【解决方案3】:
public class Vowels {

public static void main(String[] args) {
    Map<Character, Integer> vowels = new HashMap<>();
    Scanner sc = new Scanner(System.in);
    System.out.print("Please enter any word: "); //"charActer";
    String str = sc.nextLine();
    for (int i = 0; i < str.length(); i++) {
        Character c = str.charAt(i);
        if (c == 'a'
                || c == 'A'
                || c == 'e'
                || c == 'E'
                || c == 'i'
                || c == 'I'
                || c == 'o'
                || c == 'O'
                || c == 'u'
                || c == 'U') {
            if (vowels.containsKey(c)) {
                vowels.put(c, vowels.get(c) + 1);
            } else {
                vowels.put(c, 1);
            }
        }
    }

    for (Map.Entry<Character, Integer> entry : vowels.entrySet()) {
        System.out.print(entry.getKey() + "=" + entry.getValue() + " ");
    }
}}
输入:字符 输出:a=1 A=1 e=1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-23
    • 2012-01-20
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 2018-06-17
    • 2017-02-25
    相关资源
    最近更新 更多