我正在写一个字符计数器程序,它读取一行文字并计算元音,辅音,空格和标点符号的数量。
我还必须使用开关来增加每个的计数。因为这是我第一次在程序中使用switch语句,所以我不确定我是否在循环中正确使用它。
据我所知,问题在于循环编译,但是当它运行时,它会在终端中挂起,所以我假设循环没有正确终止。
我知道我计算字符的方法是非常基本的,但这是按照 指令。
由于
import java.util.Scanner;
import java.io.*;
public class CharacterCounter2
{
public static void main(String args[])
{
Scanner scan = new Scanner(System.in);
String line = new String(scan.nextLine());
String cons = new String ("bcdfghjklmnpqrstvwxyz");
String vowels = new String ("aeiou");
String space = new String (" ");
String punct = new String(",.;:");
int consCount = 0, vowelCount = 0, spaceCount = 0, pCount = 0, inx = 0;
char ch = line.charAt(inx);
while (inx <= line.length()-1)
{
if (cons.indexOf(line.charAt(inx)) != -1)
ch = 'C';
else
if (vowels.indexOf(line.charAt(inx)) != -1)
ch = 'V';
else
if(line.equals(space))
ch = 'S';
if (punct.indexOf(line.charAt(inx)) != -1)
ch = 'P';
switch (ch)
{
case 'C':
consCount += 1;
break;
case 'V':
vowelCount += 1;
break;
case 'S':
spaceCount += 1;
break;
case 'P':
pCount += 1;
default:
break;
}
inx = inx ++;
ch = line.charAt(inx);
}
System.out.println("contains" +consCount+" consonants, "+vowelCount+" vowels, " + spaceCount+" spaces" + pCount + "punctuation");
}
}
答案 0 :(得分:3)
你永远不想写这个:
inx = inx ++;
你的意思是简单
inx++;
至少应该让循环终止,否则我认为它可能会有效,除非你的空间计数逻辑是错误的。