当前位置: 首页 > 知识库问答 >
问题:

查找和计算句子中是否有正确的元音数

唐弘和
2023-03-14

我一直在环顾该网站,但找不到问题的答案。我需要能够浏览给定数量的字符串并计算单词中的元音数量。如果元音的数量与之前输入的数字匹配,则打印 YES。我尝试使用字符串数组,然后遍历数组中的每个单词以查找元音,为找到的每个元音增加元音检查(vocheck),然后检查vocheck是否等于适当的数字。但是,当我检查 vocheck for 循环是否有效时,它只是将 vocheck 保持为 0。怎么了?

import java.util.*;
public class verses {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int lines = input.nextInt();
        int[] arr = new int[lines];
        int vowels = 0;
        boolean vcheck = true;
        int vocheck = 0;
        for(int i = 0; i < lines; i++){
            arr[i] = input.nextInt();
        }   
        String[] word = new String[lines];
        for(int x = 0; x < word.length; x++){
            word[x] = input.nextLine();
        }
        word[word.length-1] = input.nextLine();

        for(int m = 0; m < lines; m++){
            for(int y = 0; y < word[y].length(); y++){
                if(word[m].charAt(y) == 'a'
                        || word[m].equals('e')
                        || word[m].equals('i')
                        || word[m].equals('o')
                        || word[m].equals('u')
                        || word[m].equals('y')){
                    vocheck++;
                }
            }
            if(vocheck != arr[m]){
                vcheck = false;
            }
        }

        if(vcheck == true){
            System.out.println("YES");
        }else{
            System.out.println("NO");
        }

    }



}

这就是示例输入的样子 3 2 2 3 英特尔代码挑战

这应该打印YES,因为有三个单词,第一个有2个元音,第二个有2个元音,第三个有3个元音

共有3个答案

奚卓
2023-03-14

你为什么不尝试一些正则表达式:)

public static void main(String[] args) throws InterruptedException {
    String s = "4 2 2 3 2 intel code challenge aa";
    s = s.replaceAll("(?i)[^\\daeiou ]", ""); // replace all consonants with empty String.
    String[] arr = s.split("\\s+"); // Split based on space.
    int count = 0;
    System.out.println(Arrays.toString(arr));
    for (int i = 1; i <= arr.length / 2; i++) {
    // Check for equality of String lengths and input values
        if (Integer.parseInt(arr[i]) == arr[arr.length / 2 + i].length()) {
            count++;
        } else {
            System.out.println("NO");
            return;
        }
    }
    // Check if counts of String are same as number of Strings
    if (count != Integer.parseInt(arr[0])) {
        System.out.println("NO");
    } else {
        System.out.println("YES");
    }

}

操作 :

[4, 2, 2, 3, 2, ie, oe, aee, aa]
YES
黎同
2023-03-14

你可以做这样的事情:

for(int i = 0; i < lines; i++){
    if(word[i].toLowerCase().replaceAll("[^aeiouy]", "").length() == arr[i]){
        System.out.println("Word " + word[i] + " has " + arr[i] + " vowels");
    }else{
        System.out.println("Word " + word[i] + " DOESN'T HAVE " + arr[i] + " vowels");
    }
}

这个word[i]. toLowerCase(). replace eAll("[^aeiouy]", "").长度()所做的是将单词中的所有字母更改为小写字母(toLowerCase()),替换其中所有非元音字符(replace eAll("[^aeiouy]", ""))并获取剩余字符的数量(长度()),元音的数量。

钱承允
2023-03-14

这里存在多个问题:

>

  • 在读取单词之前添加input.nextLine();。这是必要的,否则数组word中的第一个条目将是前一行的其余部分。
  • word[word.length-1]=input.nextLine();不是必需的
  • votest必须为循环的每次迭代初始化
  • for(int y=0; y

    import java.util.*;public class verses {
    
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int lines = input.nextInt();
        int[] arr = new int[lines];
        int vowels = 0;
        boolean vcheck = true;
        int vocheck = 0;
        for(int i = 0; i < lines; i++){
            arr[i] = input.nextInt();
        }
        input.nextLine();
        String[] word = new String[lines];
        for(int x = 0; x < word.length; x++){
            word[x] = input.nextLine();
        }
        //word[word.length-1] = input.nextLine();
    
        for(int m = 0; m < lines; m++){
            vocheck = 0;
            for(int y = 0; y < word[m].length(); y++){
                if(word[m].charAt(y) == 'a'
                        || word[m].charAt(y) == 'e'
                        || word[m].charAt(y) == 'i'
                        || word[m].charAt(y) == 'o'
                        || word[m].charAt(y) == 'u'
                        || word[m].charAt(y) == 'y'){
                    vocheck++;
                }
            }
            if(vocheck != arr[m]){
                vcheck = false;
            }
    
        }
        if(vcheck == true){
            System.out.println("YES");
        }else{
            System.out.println("NO");
        }
    }
    

    }

  •  类似资料:
    • 我一直在试图弄清楚如何计算句子每个单词中的元音和字符。例如 在句子 < code>hello : 5个字符,2个元音 <代码>有:5个字符,2个元音 。我见过完整句子做同样事情的代码。但不是一个字一个字地。 下面是我一直在做的编码 输入将全部。我很难弄清楚这一点。 在运行代码时,我没有得到元音计数。我能把句子分开。但元音计数没有发生。

    • 我正试图写一个C程序来计算元音、键击和字母字符的数量。击键计数器正在工作,但是元音计数器总是关闭一个元音。阿尔法计数器坏了。

    • 给定一个句子,我希望能够数出每个单词中有多少个元音。 示例输入: 示例输出: 我最初的想法是有2个同时循环。第一个循环直到满足EOF以结束程序,第二个(嵌套的)同时循环将运行直到满足空格 (" ") ,同时还对当前单词中的元音求和。一旦遇到空格,它将打印出元音的当前值,第二个同时循环将结束并重新开始(元音计数器重置回0)。 这是我为此编写的代码: 然而,这导致语法错误,我不能找出我的错误。 第6行

    • 考虑以下代码来计算每个单词中字母“a”的出现次数: 这将导致这样的事情: 我试图做更多的事情: 计算每个单词中的元音总数 合计编号每个单词中的字母数 一个单词是否以元音开头,则 1 否则 0 单词是否以元音结尾,则 1 否则 0 问题是,如果我使用nchar(data$string),它也计算点'.'此外,我无法找到以上4个要求的帮助。 最终数据我想看起来像这样:

    • 问题内容: 如何检查句子在Python中是否有效? 例子: 问题答案: 查看NLTK。他们支持语法,您可以使用语法来分析句子。您可以定义语法,也可以使用提供的语法以及无上下文的解析器。如果句子解析,那么它具有有效的语法;如果没有,那就没有。这些语法可能没有最广泛的覆盖范围(例如,它可能不知道如何处理StackOverflow之类的单词),但是这种方法可以让您明确说明语法中有效或无效的内容。 NLT

    • 在循环结束时,我计划显示句子中辅音和元音的数量。我想知道是否有更有效的方法来检查给定句子中有多少辅音和元音,而不是使用if语句手动输入每个字母。(key指的是我已经初始化的扫描仪) 编辑:它需要忽略数字和其他特殊字符,例如,如果我写你好@你好吗?。应该有8个元音和6个辅音。