자바 문자열 자음 모음 개수

import java.util.Scanner;
class Main {
  public static void main(String[] args) {
		System.out.print("Please enter a sentence:");
		int a=0;
		int e=0;
		int i=0;
		int o=0;
		int u=0;
		int consonant=0;
		int c;
		Scanner scan = new Scanner(System.in);
		String sentence = scan.nextLine();
		sentence = sentence.replace(" ", "");
		sentence = sentence.toLowerCase();
		
		
		
		for(int c = 0; c < sentence.length(); c++);
		{
			if(sentence.charAt(c) == a) {
				a++;
			} else if (sentence.charAt(c) == e) {
				e++;
			} else if (sentence.charAt(c) == i) {
				i++;
			} else if (sentence.charAt(c) == o) {
				o++;
			} else if (sentence.charAt(c) == u) {
				u++;
			} else {
				consonant++;
			}
		}
		
		
		System.out.println("a:"+a);
		System.out.println("e:"+e);
		System.out.println("i:"+i);
		System.out.println("o:"+o);
		System.out.println("u:"+u);
		System.out.println("consonant:"+consonant);
  }
}

문자열에서 대문자도 소문자로 인식하게 하고 그다음 각각의 갯수를 출력하는 프로그램을 만들려고 하는데 변수C가 잘못 된거 같은데 도와 주실수 있나요? ㅠ

조건문에서 a가 아니라 'a'와 비교해야 하지 않을까요?

import java.util.Scanner;
class Main 
{
    public static void main(String[] args) 
    {
        System.out.print("Please enter a sentence:");

        Scanner scan = new Scanner(System.in);
        String sentence = scan.nextLine();
        
        int consonant = 0;
        int arr[] = new int[128];
        int l = sentence.length();

        for(int i = 0; i < l; ++i)
            arr[sentence.charAt(i)]++;

        arr['a'] += arr['A'];
        arr['e'] += arr['E'];
        arr['i'] += arr['I'];
        arr['o'] += arr['O'];
        arr['u'] += arr['U'];

        consonant = l - (arr['a'] + arr['e'] + arr['i'] + arr['o'] + arr['u'] + arr[' ']);
        
        System.out.println("a:" + arr['a']);
        System.out.println("e:" + arr['e']);
        System.out.println("i:" + arr['i']);
        System.out.println("o:" + arr['o']);
        System.out.println("u:" + arr['u']);
        System.out.println("consonant:" + consonant);
    }
}

이렇게 해보세요.

실행 결과

PS. 입력 데이터들을 제공해주시면 조금 더 정확한 답변이 가능합니다.

2 Likes

마지막에 arr[97]보다는 arr['a']처럼 쓰는게 낫지 않을까요? 자1바에서 된다면…

1 Like

수정했읍니다.

감사합니다…

import java.util.Scanner;
class Main 
{
    public static void main(String[] args) 
    {
        System.out.print("Please enter a sentence:");

        Scanner scan = new Scanner(System.in);
        String sentence = scan.nextLine();
        sentence = sentence.toLowerCase();
        
        int consonant = 0;
        int arr[] = new int[128];
        int l = sentence.length();

        for(int i = 0; i < l; ++i)
        {
            if('a' <= sentence.charAt(i) && sentence.charAt(i) <= 'z')
            { 
                arr[sentence.charAt(i)]++;
                consonant++;
            }
        }

        consonant = consonant - (arr['a'] + arr['e'] + arr['i'] + arr['o'] + arr['u']);

        System.out.println("a:" + arr['a']);
        System.out.println("e:" + arr['e']);
        System.out.println("i:" + arr['i']);
        System.out.println("o:" + arr['o']);
        System.out.println("u:" + arr['u']);
        System.out.println("consonant:" + consonant);
    }
}

실행 결과

입력 데이터가 공백과 알파벳만으로 한정 된 것이 아니라면 이 코드를 사용하시는 것이 좋습니다. 처음 답변드린 코드는 질문자님이 올려주신 코드에 기반했기 때문에 알파벳과 공백만을 상정했습니다.

다시말해, ,.?@:;(){}[] 등 특수 문자가 섞이면 자음이 제대로 카운트 되지 않습니다. 공백과 알파벳만 입력으로 들어오면 처음 답변드린 코드를 사용하셔도 문제 없습니다.

감사합니다