输入另一个字符串后计算元音和辅音

时间:2019-12-04 21:19:21

标签: java

JAVA:

编写一个带有接受String对象作为其参数的构造函数的类。 该类应具有一个返回字符串中元音数量的方法, 另一种返回字符串中辅音数量的方法。 (空格既不是元音也不是辅音,应该忽略。)

在执行以下步骤的程序中演示该类:

  1. 要求用户输入字符串。
  2. 程序显示以下菜单:

a。计算字符串中的元音数量。

b。计算字符串中辅音的数量

c。计算字符串中的元音和辅音

d。输入另一个字符串

e。退出程序

我已经编写了代码:什么时候可以检查我的选项d,当我输入另一个String时,它的元音和辅音计数为0。

String.Join(" ", IEnumerable(Of Integer))

2 个答案:

答案 0 :(得分:1)

当您混合使用next()的{​​{1}}和nextLine()方法时,这是一个众所周知的问题。当您调用Scanner时,它将返回下一个单词,直到换行符为止,但是将换行符保留在缓冲区中。其余输入的第一行现在是空白行。

然后,当您调用next()时,它将返回直到换行符的所有字符;换句话说,它返回零个字符,一个空字符串。

如果您在调用nextLine()nextLine()next()等之后小心使用多余的换行符并额外调用nextInt(),则可以混合使用这些调用没有问题,但是在这种情况下,最简单的方法是始终将nextDouble()用于用户的任何输入。

答案 1 :(得分:1)

这是一个可以满足您需要的工作程序:

public class Test {


    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.println("Enter a String: ");
        String input1 = sc.next();

        VowelsAndConsonants vc = new VowelsAndConsonants(input1.toLowerCase());




        boolean flag =true;
        while (flag) {
            System.out.println("\nWhat would you like to do? Enter:\n" + "'a' to count the vowels\n"
                    + "'b' to count consonants\n" + "'c' to count both vowels and consonants\n"
                    + "'d' to enter another String\n" + "'e' to exit the program");
            String input2 = sc.next();
            switch (input2) {
                case  "a":
                    System.out.println("Vowels: " + vc.vowelsCount());
                    break;
                case "b":
                    System.out.println("Consonants: " + vc.consonantCount());
                    break;
                case "c":
                    System.out.println("Vowels: " + vc.vowelsCount());
                    System.out.println("Consonants: " + vc.consonantCount());
                    break;
                case "d":
                    System.out.println("Enter another string: ");
                    input1 = sc.next();
                    vc = new VowelsAndConsonants(input1.toLowerCase());
                    break;
                case "e":
                    flag=false;
                    break;
                default:
                    System.out.println("wrong selection please try again");

           }
        }
        System.out.println("Have a great day!");
    }
}


class VowelsAndConsonants {
    String str;
    public VowelsAndConsonants(String str){
        this.str = str;
    }


    public int vowelsCount(){
        str = str.replaceAll("[\\W]", "");  //remove non-chars
        int strLength = str.length();
        str = str.replaceAll("[aeiou]", "");
        return strLength-str.length();
    }

    public int consonantCount(){
        str = str.replaceAll("[\\W]", "");  //remove non-chars
        int strLength = str.length();
        str = str.replaceAll("[aeiou]", "");
        return str.length();
    }

}

我希望这会有所帮助。