计算字符串列表中的元音并打印计数

时间:2014-10-18 04:18:53

标签: java arrays arraylist

我有一个代码,必须只打印数组列表中我的字符串中的元音,但我不确定我是否在我的方法中正确执行。我该如何解决这个问题?它只打印出其中的5个,因为我不确定如何直接获取每个特定的元音。请找到我尝试过的以下代码。

import java.util.*;

public class vowels {

    public static void main(String[] args) {

        ArrayList<String> vowels = new ArrayList<String>();

        vowels.add("mitsubishi");
        vowels.add("subaru");
        vowels.add("nissan");
        vowels.add("honda");
        vowels.add("toyota");


        averageVowels(vowels);
    }

    public static void averageVowels(ArrayList<String> vowels) {

        System.out.println(vowels);

        int number = 0;

        for (int i = 0; i < vowels.size(); i++)
        {
            if (vowels.get(i).contains("a") || vowels.get(i).contains("e") || vowels.get(i).contains("i") ||vowels.get(i).contains("o") || vowels.get(i).contains("u"))
            {
                number++;
            }
        }
        System.out.println("a count: " +number);
        System.out.println("e count: " +number);
        System.out.println("i count: " +number);
        System.out.println("o count: " +number);
        System.out.println("u count: " +number);
    }
}

5 个答案:

答案 0 :(得分:1)

你可以很容易地做任何循环,

public static void averageVowels(ArrayList<String> vowels) {
    System.out.println(vowels);
    String arrayToString = vowels.toString();
    int length = arrayToString.length();
    System.out.println("a count: " + (length - arrayToString.replace("a", "").length()));
    System.out.println("e count: " + (length - arrayToString.replace("e", "").length()));
    System.out.println("i count: " + (length - arrayToString.replace("i", "").length()));
    System.out.println("o count: " + (length - arrayToString.replace("o", "").length()));
    System.out.println("u count: " + (length - arrayToString.replace("u", "").length()));
}

打印

[mitsubishi, subaru, nissan, honda, toyota]
a count: 4
e count: 0
i count: 4
o count: 3
u count: 3

答案 1 :(得分:0)

制作5个不同的变量来计算元音的数量。例如numbera,number e等。那么你将需要5个if语句(每个元音一个),每个语句将其各自的计数增加1。

for (int i = 0; i < vowels.size(); i++)
for (int j = 0; j<vowels.get(j).length(); j++) { 
if (vowels.get(i).charAt('a'))
    {
        numbera++;
    }
if (vowels.get(i).charAt('e'))
    {
        numbere++;
    }
if (vowels.get(i).charAt('i'))
    {
        numberi++;
    }   
if (vowels.get(i).charAt('o'))
    {
        numbero++;
    }  
if (vowels.get(i).charAt('u'))
    {
        numberu++;
    }}

答案 2 :(得分:0)

你想要计算五种类型的东西,所以你需要五个变量:

int aCount = 0;
int eCount = 0;
int iCount = 0;
int oCount = 0;
int uCount = 0;

您可以通过许多不同的方式遍历每个单词,然后循环每个单词中的每个单词。这是一种方式:

for (int i = 0; i < vowels.size(); i++) {
    String lowerCaseWord = vowels.get(i).toLowerCase(); //get lowercase version so we don't have to check each letter twice

    for (int j=0; j<lowerCaseWord.length(); j++){  //loop through each char in the string
        char c = lowerCaseWord.charAt(j);
        if (c == 'a') aCount++;
        else if (c == 'e') eCount++;
        else if (c == 'i') iCount++;
        else if (c == 'o') oCount++;
        else if (c == 'u') uCount++;
    }
}

答案 3 :(得分:0)

    if (vowels.get(i).contains("a") || vowels.get(i).contains("e") || vowels.get(i).contains("i") ||vowels.get(i).contains("o") || vowels.get(i).contains("u"))

仅检查字符串是否包含a,e,i,o或u。如果它找到其中一个,它就不用费心去检查其余的字符串了。而且由于你在if语句中使用||,如果当前条件已经为真,它将不会评估下一个条件,因此它将继续增加数字。 如果要查找每个元音的编号,一种方法是通过将字符串转换为字符串来循环字符串并检查字符是否为元音。然后你应该为每个元音创建一个计数器,并为每个元音创建一个单独的if / switch语句。例如,使用if语句。

int aCount = 0;
int eCount = 0;
int iCount = 0;
int oCount = 0;
int uCount = 0;
for (int i = 0; i < vowels.size(); i++) {
    for (char c : vowels.get(i).toCharArray()) {
    if (c == 'a') {
        aCount++;
    } else if (c == 'e') {
        eCount++;
    } else (c == 'i') {
        iCount++;
    } else if (c == 'o') {
        oCount++;
    } else if (c == 'u') {
        uCount++;
    } else {
        continue;
    }
}
}

答案 4 :(得分:0)

以下实施将是有效的。维护一个大小为256的char数组就足够了,它不仅适用于元音,也适用于任何ASCII字符。

import java.util.*;

public class Vowels {

public static void main(String[] args) {

    ArrayList<String> vowels = new ArrayList<String>();

    vowels.add("mitsubishi");
    vowels.add("subaru");
    vowels.add("nissan");
    vowels.add("honda");
    vowels.add("toyota");


    averageVowels(vowels);
}

public static void averageVowels(ArrayList<String> vowels) {

    System.out.println(vowels);
    int[] chars = new int[256];
    int number = 0;

    for (int i = 0; i < vowels.size(); i++)
    {
        for (char c : vowels.get(i).toCharArray()) {
            chars[c]++;
        }
    }
    System.out.println("a count: " +chars['a']);
    System.out.println("e count: " +chars['e']);
    System.out.println("i count: " +chars['i']);
    System.out.println("o count: " +chars['o']);
    System.out.println("u count: " +chars['u']);
}
}