JAVA:
编写一个带有接受String对象作为其参数的构造函数的类。 该类应具有一个返回字符串中元音数量的方法, 另一种返回字符串中辅音数量的方法。 (空格既不是元音也不是辅音,应该忽略。)
在执行以下步骤的程序中演示该类:
a。计算字符串中的元音数量。
b。计算字符串中辅音的数量
c。计算字符串中的元音和辅音
d。输入另一个字符串e。退出程序
我已经编写了代码:什么时候可以检查我的选项d,当我输入另一个String时,它的元音和辅音计数为0。
String.Join(" ", IEnumerable(Of Integer))
答案 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();
}
}
我希望这会有所帮助。