Java 检查是否有任何3个辅音

Java 检查是否有任何3个辅音,java,string,char,Java,String,Char,我有一个代码来检查字符串中是否有三个相同的连续辅音。看起来是这样的: String cons = "bcdfghjklmnpqrstvwxyz"; char[] consonants = cons.toCharArray(); int z = 0; Scanner scan = new Scanner(System.in); System.out.println("Enter your word!"); Stri

我有一个代码来检查字符串中是否有三个相同的连续辅音。看起来是这样的:

    String cons = "bcdfghjklmnpqrstvwxyz"; 
    char[] consonants = cons.toCharArray();

        int z = 0;
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter your word!");
        String word = scan.next().toLowerCase();
        int length = word.length();
        char[] ch = word.toCharArray();
        for (int i = 0; i < length-2; i++) {
            for (int j = 0; j < 21; j++) {
                if ((ch[i] == consonants[j]) &&
                        (ch[i + 1] == consonants[j])
                        && (ch[i + 2] == consonants[j])) {
                    z++;
                    break;
                }
            }
            if (z == 1)
                break; 
        }
        if (z == 1) {
            System.out.println("Three consecutive consonants here!");
        } else {
            System.out.println("It is fine!");
        }
String cons=“bcdfghjklmnpnpqrstvwxyz”;
char[]辅音=cons.toCharArray();
int z=0;
扫描仪扫描=新扫描仪(System.in);
System.out.println(“输入您的单词!”);
String word=scan.next().toLowerCase();
int length=word.length();
char[]ch=word.toCharArray();
对于(int i=0;i
但我想检查三个连续的辅音。找到诸如圣诞节、国家、孩子、学校等词


我也不知道我该如何修改代码来实现它。你能帮忙吗?

在我看来,最好的方法是按字符循环搜索要搜索的单词。每次您当前所在的字母位于辅音数组中时,将一个字母添加到
z
。每当您当前使用的字母不在辅音数组中时,请将
z
设置为零。如果在任何一点,
z
等于3,那么您就知道正在搜索的字符串在一行中有3个辅音,并且您可以中断循环。如果您到达循环的末尾并且
z
从未到达三个,那么您就知道您正在搜索的字符串没有三个连续的辅音。我希望这能有所帮助,祝您在编码方面好运

在我看来,最好的方法是按字符循环搜索要搜索的单词。每次您当前所在的字母位于辅音数组中时,将一个字母添加到
z
。每当您当前使用的字母不在辅音数组中时,请将
z
设置为零。如果在任何一点,
z
等于3,那么您就知道正在搜索的字符串在一行中有3个辅音,并且您可以中断循环。如果您到达循环的末尾并且
z
从未到达三个,那么您就知道您正在搜索的字符串没有三个连续的辅音。我希望这能有所帮助,祝您在编码方面好运

你应该看看字符串文档,尤其是contains()方法。

你应该看看字符串文档,尤其是contains()方法。

我认为如果你声明自己是一个像
private static boolean isconant(char ch)
这样的辅助方法,会更容易管理。此方法将在
辅音
数组上包含一个循环,如果参数与辅音之一相同,则返回
true

现在在主程序中,您可以循环输入单词的字符,同时保持连续辅音的计数。我将以
国家
为例。如果你使用
c
,你的方法应该告诉你这是一个辅音,所以将计数增加到1
o
不是,因此重置为零。对
u
执行相同的操作(不改变任何内容,但这是最简单的操作)。现在来了
n
t
r
,所以你的计数会增加到1,然后是2,然后是3。当它达到3时,你就完成了,因为你知道你有3个连续的辅音


在循环中,您将在
if
-
else
语句中调用方法,如
if(isconsant(ch))
…您将有另一个
if
语句来查看计数是3-在第一个语句内部还是之后。

我认为,如果您声明自己是一个辅助方法,如
private static boolean isconant(char ch)
,将更容易管理。此方法将在
辅音
数组上包含一个循环,如果参数与辅音之一相同,则返回
true

现在在主程序中,您可以循环输入单词的字符,同时保持连续辅音的计数。我将以
国家
为例。如果你使用
c
,你的方法应该告诉你这是一个辅音,所以将计数增加到1
o
不是,因此重置为零。对
u
执行相同的操作(不改变任何内容,但这是最简单的操作)。现在来了
n
t
r
,所以你的计数会增加到1,然后是2,然后是3。当它达到3时,你就完成了,因为你知道你有3个连续的辅音


在循环中,您将在
if
-
else
语句中调用您的方法,如
if(isConsonant(ch))
…您将有另一个
if
语句来查看计数是3-在第一个语句中还是在第一个之后。

您已询问如何更改代码以使其工作,因此,以下内容基于您的代码并将起作用:

String cons = "bcdfghjklmnpqrstvwxyz"; 
char[] consonants = cons.toCharArray();

int z = 0;
Scanner scan = new Scanner(System.in);
System.out.println("Enter your word!");
String word = scan.next().toLowerCase();
int length = word.length();
char[] ch = word.toCharArray();
for (int i = 0; i < length; i++) {
    boolean isConsonant = false;
    for (int j = 0; j < 21; j++) {
        if (ch[i] == consonants[j]) {
            isConsonant = true;
            break;
        }
    }
    if (isConsonant) {
        z++;
        if (z == 3)
            break;
    } else {
        z = 0;
    }
}
if (z == 3) {
    System.out.println("Three consecutive consonants here!");
} else {
    System.out.println("It is fine!");
}
[a-z]
是从a到z的任意字符,
[^aeiuo]
是除元音以外的任意字符。使用
&&
完成两者的相交,得到的
[a-z&&[^aeiuo]]
表示辅音。当我们寻找三个连续的辅音时,
{3}
被相应地添加


在这里,您可以找到有关正则表达式的详细信息:

您已询问如何更改代码以使其正常工作,因此以下内容基于您的代码并将正常工作:

String cons = "bcdfghjklmnpqrstvwxyz"; 
char[] consonants = cons.toCharArray();

int z = 0;
Scanner scan = new Scanner(System.in);
System.out.println("Enter your word!");
String word = scan.next().toLowerCase();
int length = word.length();
char[] ch = word.toCharArray();
for (int i = 0; i < length; i++) {
    boolean isConsonant = false;
    for (int j = 0; j < 21; j++) {
        if (ch[i] == consonants[j]) {
            isConsonant = true;
            break;
        }
    }
    if (isConsonant) {
        z++;
        if (z == 3)
            break;
    } else {
        z = 0;
    }
}
if (z == 3) {
    System.out.println("Three consecutive consonants here!");
} else {
    System.out.println("It is fine!");
}
[a-z]
是从a到z的任意字符,
[^aeiuo]
是除元音以外的任意字符。使用
&
    String cons = "bcdfghjklmnpqrstvwxyz"; 


        int z = 0;
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter your word!");
        String word = scan.next().toLowerCase();
        //int length = word.length();
        char[] ch = word.toCharArray();
        for (int i = 0; i < ch.length-2; i++) {

                if (
                        cons.indexOf(ch[i])!=-1 &&
                        cons.indexOf(ch[i+1])!=-1 &&
                        cons.indexOf(ch[i+2])!=-1
                   ) 
                {
                    z++;
                    break;
                }
              if (z == 1)
                break; 
        }
        if (z == 1) {
            System.out.println("Three consecutive consonants here!");
        } else {
            System.out.println("It is fine!");
        }
        }