簡體   English   中英

使用數組方法計算和顯示字符串中的元音 java

[英]count and display vowels in a string using array methods java

我一直在這里尋找解決方案一段時間,但我無法找到所需的解決方案,我被要求做的那個......所以我需要從用戶那里獲取一個字符串並計算並顯示所有字符串中的大寫和小寫元音。 這是所需的 output:

Enter a string:
IAMHERE
a  : occured 0 
e  : occured 0 
i  : occured 0 
o  : occured 0 
u  : occured 0 
A  : occured 1 
O  : occured 0 
U  : occured 0
I  : occured 1
E  : occured 2

這是我到目前為止所做的:

import java.util.Scanner;

public class CountVowels {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter a string:");
        String input = sc.next();
        char[] chars = createArray(input);
        countLet(chars);
    }

    static char[] createArray(String str) {
        char[] chars = new char[str.length()];
        for (int i = 0; i < chars.length; i++) {
            chars[i] = str.charAt(i);
        }
        return chars;
    }

    static void countLet(char[] chars) {
        char[] vowels = {'a', 'e', 'i', 'o', 'u', 'A', 'O', 'U', 'I', 'E'};
        int numberOfVowels = 0;
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] == vowels[i]) {
                numberOfVowels++;
            }
            System.out.println(vowels[i] + "  : occured " + numberOfVowels + " ");
        }
    }
}

我知道問題出在哪里---> countLet 因為我正在將所有字符連續與元音進行比較......例如,字符的第一個字母是“I”,但元音的第一個字母是“a”,很明顯它們不相等,更重要的是我的代碼的 output 不比較“I”和“E”字母,因為輸入小於元音。長度......

后面代碼的output:

Enter a string:
IAMHERE
a  : occured 0 
e  : occured 0 
i  : occured 0 
o  : occured 0 
u  : occured 0 
A  : occured 0 
O  : occured 0 

那我能怎么辦?!

當您將chars[i]vowels[i]進行比較時,就會出現問題。 由於您正在遞增i程序沒有所需的 output。

例如,字符串: Hello

H 僅針對“a”進行檢查

e 僅針對 'e' 進行檢查

l 僅針對 'i' 等進行檢查。

這也意味着如果字符串的長度大於vowels.length則您將獲得 IndexOutOfBounds 異常。

您需要檢查每個字母是否是元音的代碼:

for (char c : input) { // Loop through each character in the string
    for (char v : vowels) { // Loop through each vowel
        if (c == v) { // The letter is a vowel
           numberOfVowels++;
           break; // The letter cannot be another vowel too, so break out of the inner loop
        }
    }
}

然后,您可以修改它並將元音更改為Map<Character, Integer>以跟蹤每個元音被看到的次數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM