import java.util.Scanner;
public class lab05a
{
public static void main (String[] args)
{
String statement;
Scanner scan = new Scanner(System.in);
int vowela;
int vowele;
int voweli;
int vowelo;
int vowelu;
int nonvowel;
int vowela = 0;
int vowele = 0;
int voweli = 0;
int vowelo = 0;
int vowelu = 0;
statement = scan.nextString();
statement = statement.toLowerCase();
for (int i = 0; i <= statement.length(); count++)
{
char c = examplestring.charAt(i);
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u')
switch (c)
{
case 'a':
vowela += 1;
break;
case 'e':
vowele += 1;
break;
case 'i';
voweli += 1;
break;
case 'o';
vowelo += 1;
break;
case 'u';
vowelu += 1;
break;
}
else
nonvowel +=1;
}
System.out.prinln("a: " + vowela);
System.out.prinln("e: " + vowele);
System.out.prinln("i: " + voweli);
System.out.prinln("o: " + vowelo);
System.out.prinln("u: " + vowelu);
System.out.prinln("nonvowel: " + novowel);
}
}
我想过这样做:
for
循环来遍历String语句的每个字符。if
语句,检查c
(声明为statement.charAt(i)
)是否为元音。c
不是元音,则会将其添加到辅音计数中。交换机是我遇到问题的地方。案例'a'
和案例'e'
不会导致错误,但案例'i'
到'u'
会导致错误('Error: : Expected'
)。
我不明白这意味着什么或为什么,因为案例'i'
到'u'
的编写方式与案例'a'
和'e'
相同。有人可以帮助我吗?
3 errors found:
[line: 38] Error: : expected
[line: 41] Error: : expected
[line: 44] Error: : expected
很抱歉,如果这篇文章格式不正确,我是Stack Overflow的新手。
答案 0 :(得分:0)
你的代码中有很多错误,我修改了它(在底部发布)并指出了你的一些错误:
将statement = scan.nextString().toLowerCase();
更改为statement = scan.nextLine().toLowerCase();
我不明白这意味着什么或为什么,因为案例&#39;我&#39;通过&#39; u&#39;用与案例相同的方式编写&#39; a&#39;和&#39;。
您的切换错误,因为案例i
,o
和u
有一个分号(;
)而不是冒号(:
) 。只是那个小差异导致那里的错误。将您的switch
声明更改为:
switch(c) {
case 'a':
vowela++;
break;
case 'e':
vowele++
break;
case 'i':
voweli++
break;
case 'o':
vowelo++
break;
case 'u':
vowelu++;
break;
}
这是您修改后的代码。现在它是正确的,它有效:
import java.util.Scanner;
public class lab05a {
public static void main (String[] args) {
String statement;
Scanner scan = new Scanner(System.in);
int vowela = 0;
int vowele = 0;
int voweli = 0;
int vowelo = 0;
int vowelu = 0;
int nonvowel = 0;
statement = scan.nextLine().toLowerCase();
for (int i = 0; i < statement.length(); i++) {
char c = statement.charAt(i);
switch (c) {
case 'a':
vowela++;
break;
case 'e':
vowele++;
break;
case 'i':
voweli++;
break;
case 'o':
vowelo++;
break;
case 'u':
vowelu++;
break;
default:
nonvowel++;
break;
}
}
System.out.println("a: " + vowela);
System.out.println("e: " + vowele);
System.out.println("i: " + voweli);
System.out.println("o: " + vowelo);
System.out.println("u: " + vowelu);
System.out.println("nonvowel: " + nonvowel);
}
}
您可能已经注意到一些更改,例如删除检查元音的if
语句。我没有做所有这些,而是添加了一个默认案例。如果其他条件都不成立,则执行default
情况中的任何条件。我还初始化了您的变量vowela
,vowele
,voweli
等,而不是vowela += 1
我只是将其更改为vowela++
,这会产生相同的效果(与其他字母相同)。