Как подсчитать каждый прописные гласные и строчные гласные в строке? [Дубликат]

Это можно решить одной строкой. Вопрос задан двумя списками (temp1 и temp2), возвращающими их разницу в третьем списке (temp3).

temp3 = list(set(temp1).difference(set(temp2)))
1
задан rolfl 29 October 2013 в 16:38
поделиться

9 ответов

Вот более простой способ сделать это, надеюсь, что это поможет:

public static void checkVowels(String s){
    System.out.println("Vowel Count: " + (s.length() - s.toLowerCase().replaceAll("a|e|i|o|u|", "").length()));
    //Also eliminating spaces, if any for the consonant count
    System.out.println("Consonant Count: " + (s.toLowerCase().replaceAll("a|e|i|o| |u", "").length()));
}
2
ответ дан Actiwitty 22 August 2018 в 22:20
поделиться
  • 1
    Вот более простая версия для вашего счетчика гласных: s.toLowerCase().replaceAll("[^aoiuye]","").length(); – Ellisan 10 October 2017 в 07:05

Сделав что-то вроде этой надежды, это поможет, это даст гласные, согласные каждого слова

public static void main (String args[]) 
        {
                Scanner stdin = new Scanner(System.in);
                String string1;
                System.out.println("Enter a string");
                string1 = stdin.nextLine();
                string1 = string1.toLowerCase();
                int count = 0;
                int vowels = 0;
                int consonants = 0;
                for (String retval: string1.split(" ")){
                     for (int i = 0; i < retval.length(); i++)
                {
                        char ch = retval.charAt(i);
                        if (ch == 'a' || ch == 'e' || ch == 'i' || 
                                        ch == 'o' || ch == 'u')
                        {
                                vowels++;
                        }
                        else
                        { 
                                consonants++;
                        }
                }
            System.out.println(retval.substring(0, 1).toUpperCase() + retval.substring(1)+" has "+vowels+" vowels and "+consonants+" cosonants");
         vowels=0;
         consonants=0;
      }

        }
1
ответ дан Bharath R 22 August 2018 в 22:20
поделиться

Это выглядит просто, чем приведенные выше ответы. Он получает вход, преобразует его в нижний регистр, а затем в массив символов. Простой цикл будет делать трюк вперед.

import java.util.*;

public class FindVowelsConsonents {

  public static void main(String[] args) {
    int vowels_count = 0;
    int consonents_count = 0;
    Scanner sc = new Scanner(System.in);
    String str = sc.nextLine();
    String str2 = str.toLowerCase();
    char[] chr = str2.toCharArray();

    for(int i=0;i<chr.length;i++){
        if(chr[i] == 'a' || chr[i]== 'e' || chr[i] == 'i' || 
                              chr[i] == 'o' || chr[i] == 'u')
            vowels_count++;
        else
            consonents_count++;
    }

    System.out.println(vowels_count+ " "+consonents_count); 
    sc.close();
   }
}
0
ответ дан Dave2e 22 August 2018 в 22:20
поделиться

Насколько я могу судить, вы можете использовать StringTokenizer:

    String text = "dupalo twoja mama";
    StringTokenizer tokenizer = new StringTokenizer(text,"aeiuo",false);
    int vowels = tokenizer.countTokens();
    System.out.println(vowels);

В этом случае «текст» он распечатает 7.

0
ответ дан Filip 22 August 2018 в 22:20
поделиться

Я предлагаю вам:

  • создать окончательный массив гласных,
  • определить функцию bool isVowel(char c) и использовать ее в вашем условии if.
0
ответ дан kerberos84 22 August 2018 в 22:20
поделиться
import java.util.Scanner;

//don't use space in between the input string;

 class StrRev {

    static String Vowels ="aeiouAEIOU";

    public static void main(String[] args){
         @SuppressWarnings("resource")
        Scanner name = new Scanner(System.in);
         String nm = name.nextLine();

         System.out.println();
         int vowel=0;
         int consonant=0;
        for(int i=0;i<nm.length();i++){
            for(int j=0;j<Vowels.length();j++){
                if(Vowels.charAt(j)==nm.charAt(i)){
                    vowel++;
                    break;
                }
            }
        }
        consonant = nm.length()-vowel;
        System.out.println("no of Vowels :"+vowel+"\nno of consonant :"+consonant);
     }

}
-1
ответ дан Kumar Saurabh 22 August 2018 в 22:20
поделиться
  • 1
    любезно объясните ответ так, чтобы будущим читателям можно было воспользоваться – Kumar Saurabh 30 October 2015 в 08:00

следующий код даст вам гласный и подсчет констант

static String VOWEL_GROUP = "AEIOUaeiou";
static String testString = "AAAASHMAIOUAXCCDIOUGGGGA"; // say this is your text

public static void main(String[] args) {
    int vovelCount = 0;
     int consonantCount = 0;
    for (int j = testString.length() - 1; j >= 0; j--) {//outer loop 
        for (int i = 0; i < VOWEL_GROUP.length(); i++) { //inner loop
            if (VOWEL_GROUP.charAt(i) == testString.charAt(j)) {
                vovelCount++; //vowel count in text
                break;
            }else{
                consonantCount ++;
            }
        }
    }
    System.out.println(vovelCount+" "+ consonantCount);
}
0
ответ дан Shamse 22 August 2018 в 22:20
поделиться

Вот простой код для подсчета числа гласных с использованием рекурсии

 public static int vowels(String s){
        int count =0;
        char c;
        if(s.length()==0){
            return 0;
        }
        else{
            c =s.charAt(0);
            if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u'){
                count++;
            }
            return count+vowels(s.substring(1));


        }
    }
0
ответ дан sunp 22 August 2018 в 22:20
поделиться
  • 1
    Это не будет работать. Нет функции countVowel, и переданный параметр неверен – jny 27 March 2015 в 21:38
  • 2
    попробуйте сейчас – sunp 27 March 2015 в 23:04

Мой код без сканера и, возможно, не очень простой, но:

public class Main{
public static void main(String[] args) {

    String test = "qwertyYVTA";
    test = test.trim();
    int vowels = 0;
    int consonants = 0;

    Pattern patternVow = Pattern.compile("[eyuioa]", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
    Matcher matcherVow = patternVow.matcher(test);
    while (matcherVow.find()) {
        vowels++;
    }

    Pattern patternCons = Pattern.compile("[wrtpsdfghjklzxcvbnm]", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
    Matcher matcherCons = patternCons.matcher(test);
    while (matcherCons.find()) {
        consonants++;
    }
    System.out.println("Vowels in test String is " + vowels);
    System.out.println("Consonants in test String is " + consonants);
    }
}
1
ответ дан ZolkiBy 22 August 2018 в 22:20
поделиться
  • 1
    Иногда Y может быть гласным, нужен специальный код, чтобы считать его гласным, а не просто обычным сопоставлением. – Abhijeet 21 November 2015 в 18:27
Другие вопросы по тегам:

Похожие вопросы: