如何仅从数组中输出以“ b”开头的单词

时间:2019-04-25 04:56:12

标签: java arrays regex string for-loop

我创建了一个程序,该程序允许用户输入5个单词。这些字 被存储到一个字符串数组中。用户完成操作后,将显示输入以字母“ B”开头的单词的次数(小写或大写)。现在我还必须重新声明B字。

这是我到目前为止拥有的代码,用于查找输入的单词中以“ b”开头的单词

int fromIndex = 0;
    int count = 0;
    String words[] = new String [5];

    for (int x = 0 ; x <= words.length - 1 ; x = x + 1)
    {
        System.out.print ("Please enter a word: ");
        words [x] = kbi.readLine ();
        fromIndex = 0;
        words [x] = words [x].toLowerCase ();


        fromIndex = words [x].indexOf ("b", fromIndex);
        if (fromIndex == 0) // STARTS WITH B
        {
            count++;

        }

    }

    System.out.println ("You entered " + count + " 'B' words and they were: ");

我当时想我可以使用if语句来打印b字。喜欢:

if (words.charAt(0) == "b")
{
    System.out.println (words);
} 

但这似乎并没有奏效,我也不认为会那样,我有点无所适从。

希望我能对此有所帮助,谢谢。

2 个答案:

答案 0 :(得分:1)

这是因为charAt返回char而不是String,所以您必须更改比较:

if (words.charAt(0) == 'b')

其他可能性是使用正则表达式"b.*"甚至更简单-String带有startsWith方法,因此您可以简单地做到这一点:

if (words.startsWith("b"))

答案 1 :(得分:0)

您的代码字中的

不是String(它是String的数组),因此它没有上面使用的charAt方法。您的word数组中有5个String,所以如果要在数组中写入所有以字符'b'开头的String,则应遍历数组并打印所有以'b'开头的字符串,如下所示:

for(String str : words){
    if (str.charAt(0) == 'b'){
            System.out.println(str);
}

一些提示: 在Java 7中,字符串具有您可以使用的startsWith方法。如果您使用的是Java 6,请检查是否也有它:

for(String str : words){
        if (str.startsWith("b", 0)){
            System.out.println(str);
    }