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());
}