Java 在多个字符串输入中计算元音的程序
这个节目所做的是 提示输入测试用例的数量,Java 在多个字符串输入中计算元音的程序,java,Java,这个节目所做的是 提示输入测试用例的数量, 然后,用户输入作为测试用例的字符串行。 程序是计算每个测试用例中的元音数。 然后打印出每个测试用例的测试结果 顺便说一句,对于这个特殊的节目,“y”也是一个元音 例如; 测试次数: 4 吉特萨吉鲁 bsa uiqsacva o h qi samsauq sajahhsa 斯卡贾约萨克 回答: 5 4 13 2 问题是程序没有读取最后一行/输入。它只带来前3个输入的计数,而不是最后一个。我希望我足够清楚 import java.util.Sca
然后,用户输入作为测试用例的字符串行。
程序是计算每个测试用例中的元音数。 然后打印出每个测试用例的测试结果 顺便说一句,对于这个特殊的节目,“y”也是一个元音 例如; 测试次数: 4
吉特萨吉鲁
bsa uiqsacva
o h qi samsauq sajahhsa
斯卡贾约萨克 回答:
5 4 13 2 问题是程序没有读取最后一行/输入。它只带来前3个输入的计数,而不是最后一个。我希望我足够清楚
import java.util.Scanner;
/*
* Counts number of Vowels in each line
*/
public class VowelCount {
/*
*
*/
public static void main(String[] args){
Scanner input = new Scanner(System.in);
Scanner input2 = new Scanner(System.in);
//prompt user for number of test case
System.out.println("Type in number of Test Cases");
int testcases = input.nextInt();
String[] line = new String[testcases];
String newline;
for(int i=0; i<testcases; i++)
{
//initialize input to line 1,2,3 e.t.c
line[i] = input2.nextLine();
//remove all white spaces
newline =line[i].replaceAll(" ", "");
display(testcases, newline);
}
}
/*
* counts how many vowels are in eace line of input
*/
public static int Counter(String input)
{
//start count from 0;
int counter = 0;
for(int i = 0; i<input.length(); i++)
{
//set character at position i to Dstr
char dStr = input.charAt(i);
//compare if dstr is a vowel
if(dStr == 'i' || dStr == 'u' || dStr == 'o' || dStr == 'a' || dStr == 'e' || dStr == 'y')
{
//increase when characte is a vowel
counter++;
}
}
//return the last count
return counter;
}
/*
* diplay the total count;
*/
public static void display(int testcases, String input)
{
System.out.print(" "+Counter(input));
}
import java.util.Scanner;
/*
*统计每行中的元音数
*/
公共类元音计数{
/*
*
*/
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
扫描仪输入2=新扫描仪(System.in);
//提示用户输入测试用例的数量
System.out.println(“输入测试用例数”);
int testcases=input.nextInt();
String[]line=新字符串[testcases];
字符串换行符;
对于(int i=0;i在阅读了大量的测试用例后,执行scan.nextLine()。不知道为什么会这样,有人可以随意解释,但是如果您阅读的是int,然后是字符串,您可以
int n = Integer.parseInt(scan.nextLine());
或
另外,我知道你没有问,但这里有一个更简单的方法来计算元音的数量
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
scan.nextLine();
for(int i = 0; i < n; i++){
String str = scan.nextLine();
System.out.println(str.replaceAll("[^AEIOUaeiouYy]", "").length());
}
}
publicstaticvoidmain(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
int n=scan.nextInt();
scan.nextLine();
对于(int i=0;i
它所做的是删除所有不是元音的东西(和y),并打印出它的长度。真的不确定它是否更快,但它要简单得多。实际上,我正在测试,它工作得很好,它精确地得到了我要求的输入量
我的控制台:
Type in number of Test Cases
4
werty
2
sdfghj
0
xdcfvgh
0
xsdfgh
0
有时,代码越少,事情就越清楚:
void printVowelCount(String text) {
System.out.println(text.replaceAll("[^aeiouAEIOU]", "").length());
}
我不喜欢计数器
是大写的。Java方法应该是小写的。如果在发布代码之前格式化代码,通常会有很大帮助。:)已修复。事实证明,这实际上是由扫描仪造成的。我应该对扫描仪做什么更改?感谢您的帮助您解释的问题在OPs代码中不存在(当前)@bright抱歉,我出去了几天。在第一次扫描.nextLine()之后,添加“scan.nextLine();”。
void printVowelCount(String text) {
System.out.println(text.replaceAll("[^aeiouAEIOU]", "").length());
}