Java 我需要数一数元音和辅音,但辅音让我很为难
我搞不懂如何既有元音又有辅音。代码中的元音部分工作正常。我不知道如何添加辅音Java 我需要数一数元音和辅音,但辅音让我很为难,java,Java,我搞不懂如何既有元音又有辅音。代码中的元音部分工作正常。我不知道如何添加辅音 import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner in = new Scanner(System.in); System.out.println("Enter some text: "); String str = in.next
import java.util.Scanner;
public class Main
{
public static void main(String args[])
{
Scanner in = new Scanner(System.in);
System.out.println("Enter some text: ");
String str = in.nextLine();
System.out.println(str);
System.out.print("your input has " + count_Vowels(str) + "vowels");
}
public static int count_Vowels(String str)
{
int vcount = 0;
for (int i = 0; i < str.length(); i++)
{
char ch = str.charAt(i);
if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u')
{
vcount++;
}
}
return vcount;
}
public static int count_Consanants(String str)
{
int ccount = 0;
for (int i = 0; i < str.length(); i++)
{
char ch = str.charAt(i);
if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u')
{
vcount++;
}
else
{
consonants++;
}
}
}
}
我似乎无法理解代码的辅音部分您的代码还将计算其他非辅音字符。下面是计算元音和辅音的简单方法:
for (int i = 0; i < str.length(); i++) {
//Checks whether a character is a vowel
if (str.charAt(i) == 'a' || str.charAt(i) == 'e' || str.charAt(i) == 'i' || str.charAt(i) == 'o' || str.charAt(i) == 'u') {
vCount++;
}
//Checks whether a character is a consonant
else if (str.charAt(i) >= 'a' && str.charAt(i)<='z') {
cCount++;
}
}
同样,您也可以修改大写字符的代码
略显优雅:
Set<Character> vowels = new HashSet<>(Arrays.asList('a', 'e', 'i', 'o', 'u'));
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (vowels.contains(c)) {
vCount++;
} else if (c >= 'a' && c <= 'z') {
cCount++;
}
}
这里有一种方法 首先,它将字符串转换为小写,以便于搜索 然后它为元音设置一个字符串。如果你算的话,你可能想加上y 主要部分在数组中循环,确保字符是字母,然后计算计数。只检查字母很重要,因为空格和标点符号可能会影响结果。 消除过程 你说: 我被辅音难住了 基本的想法是,在你测试了拉丁语字母a,字母b不是数字,标点符号等,字母c不是元音后,你可以假设你有一个辅音 正如您在下面代码示例的中心所看到的,我们使用级联if语句检查每个字符,这里总结为伪代码:
if( … not part of the Latin script, such as Korean or emoji )
{
other++;
}
else if( … not a letter, such as digit or punctuation )
{
other++;
}
else if ( … definitely a vowel )
{
vowel++;
}
else if ( … maybe a vowel (`y`) )
{
maybeVowel++;
}
else // Else definitely not a vowel, so it must be a consonant.
{
consonant++;
}
char是一种遗产
前两个答案基本正确,但使用过时的char类型。在中定义的140000多个字符中,该类型处理的字符不到一半。这些答案假设只有英语没有变音等等
Unicode码点
相反,要养成使用整数的习惯
String input=您的代码不是已经在做您想要的事情了吗?如果它不是元音,它是辅音,那么If的else块。。。else是增加辅音计数器。定义辅音:一个介于“a”和“z”之间的字符,它不是元音。我很想否决这个。鼠标悬停在“向下投票”按钮的文本上表示:此答案无效。这个答案对于那些显然还没有将注意力集中在ASCII、变量和循环上的人来说肯定是没有用的。在这里,答案看起来像是在炫耀,它更适合于一个关于unicode等主题的真实问题,而不是一个应该以不清楚/寻找调试帮助来结束的问题的答案…@Marco13正如我所说,char类型确实是有缺陷和过时的。使用代码点整数是现代Java中处理字符的正确方法。我使用数组而不是集合来编写这段代码,以保持代码的简单性,并接近问题中所示的代码。在现代信息系统世界中,教新程序员只使用美式英语和ASCII文本是不负责任的。如果我对编程和写那个问题还不熟悉,我写的答案正是我想要找到的。你所谓的炫耀,我称之为展示基本的文本处理。@Marco13你的评论确实启发我在顶部添加伪代码,以总结通过排除所有其他可能性来确定辅音的方法。谢谢你。没有必要争论答案本身的内容。事实上,尽管有超过20年的编程经验,我还是从中学到了一些东西。问题的关键是:提问者提出了一个问题,归结为由于未声明变量而无法编译的代码段。不管你把标准定得多低,总有人会做不定的事。你的答案可能更适合或类似的答案。具体地说:如果你的所有努力都白费了,当这个问题被删除的时候,那将是很遗憾的,因为它应该被删除:如果它被发布到一个合适的问题上,我当然会投上一票——例如,我链接到的那个问题,但可能还有其他问题更适合
if( … not part of the Latin script, such as Korean or emoji )
{
other++;
}
else if( … not a letter, such as digit or punctuation )
{
other++;
}
else if ( … definitely a vowel )
{
vowel++;
}
else if ( … maybe a vowel (`y`) )
{
maybeVowel++;
}
else // Else definitely not a vowel, so it must be a consonant.
{
consonant++;
}