我必须以一个句子作为输入,从其中一个单词中提取每个单词,并与它们一起打印它们各自的辅音计数。这是我正在使用的代码:
for(int i=0;i<l;i++)
{
count=0; word="";
if(sentence.charAt(i)!=' ')
{
word+=sentence.charAt(i);
}
else
{
for(int j=0;j<word.length();j++)
{
ch=word.charAt(i);
if (ch!='A'&&ch!='E'&&ch!='I'&&ch!='E'&&ch!='O'&&ch!='U')
{
count++;
}
}}
System.out.print(word+"\t"+count);}
我一直在尝试调试它,并且总是得到不需要的各种输出。
我面临的两个主要问题是:
如何不使用Scanner或其他类而仅使用基本循环从句子中提取单词
如何列出正确的辅音计数正确格式化为表格形式
此外,我打算将提取的单词以等于其辅音计数的索引添加到String数组中。
StringArr[count]=" "+word;
如果有两个以上的字具有相同的辅音计数,我将在此处添加空格。
任何帮助表示赞赏。
附注-我是新手,因此请随时指出我可能注意到的所有上下文错误。
最佳答案
如果您可以使用最简单的代码来解决问题,则代码会更少,(通常)更容易理解,因此错误也更少。
辅音的数量就是除去非辅音的长度:
int count = str.replaceAll("(?i)[^b-df-hj-np-tv-z]", "").length();
正则表达式说明:
(?i)
表示忽略大小写[^...]
是否定的字符类,即列表中未包含的任何字符b-d
表示在b
到d
(包括)范围内的字符其他字符范围等
该代码也可以满足一些极端情况,而您的代码有一个bug。它把所有“非元音”都算作辅音,但这也算撇号。考虑
"can't"
有3个辅音。使用上面的内容,加上
split()
以获得“单词”:for (String word : sentence.split("\\s+")) {
int count = str.replaceAll("(?i)[^b-df-hj-np-tv-z]", "").length();
System.out.println(word + '\t' + count);
}
使用流并内联计数,您可以在1条语句中进行操作:
Arrays.stream(sentence.split("\\s+"))
.forEach(w -> System.out.println(w + '\t' +
w.replaceAll("(?i)[^b-df-hj-np-tv-z]", "").length());
免责声明:代码可能无法按照我在手机上显示的方式进行编译或运行(但是很有可能运行该代码)
关于java - 提取给定句子中的所有单词,并将它们的辅音计数打印出来,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40825836/