맵크나이트의 마라탐방

JAVA toLowerCase(),charAt() 활용한 문자찾기문제 오답노트 본문

JAVA/JAVA알고리즘

JAVA toLowerCase(),charAt() 활용한 문자찾기문제 오답노트

봉바👾 2023. 7. 12. 00:11

문자 찾기

 

설명

한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가 입력받은 문자열에 몇 개 존재하는지 알아내는 프로그램을 작성하세요.

대소문자를 구분하지 않습니다.문자열의 길이는 100을 넘지 않습니다.

 

입력

첫 줄에 문자열이 주어지고, 두 번째 줄에 문자가 주어진다.

문자열은 영어 알파벳으로만 구성되어 있습니다.

 

출력

첫 줄에 해당 문자의 개수를 출력한다.

 
	  public static void main(String[] args){
		  Scanner sc = new Scanner(System.in);
		  String str1 = sc.next();
		  String ch1 = sc.next();
	    searchChar(str1.toLowerCase(), ch1.toLowerCase());
	  }
	  
	  public static int searchChar(String str, String ch){
	    int cnt = 0;
	    
	    for(int i = 0; i<str.length(); i++){
	      if(str.charAt(i) == ch.charAt(0)){
	    	 
	        cnt++;
	        }
	    }
	    System.out.println(cnt);
	    return cnt;
	}

정답코드

 

 

 

import java.util.Scanner;
  
public class Main {
   public static void main(String[] args){
		  Scanner sc = new Scanner(System.in);
		  String str1 = sc.next();
		  char ch1 = sc.next().charAt(0);
	    searchChar(str1.toLowerCase(), ch1);
	  }
	  
	  public static int searchChar(String str, char ch){
	    int cnt = 0;
	    
	    for(int i = 0; i<str.length(); i++){
	      if(str.charAt(i) == ch){
	    	 
	        cnt++;
	        }
	    }
	    System.out.println(cnt);
	    return cnt;
	}
}

위의 코드로 입력하면 char 값이 대문자일 시 리턴값이 0으로 뜸;;

scan받은 값을 둘 다 소문자로 받기 위해 toLowerCase()를 사용하기 위해선

데이터타입이 String이어야했음

char는  toLowerCase() 사용불가능,

searchChar의 char 를 String 타입으로 바꾸고,

if문내에서는 ch.charAt(0)번째를 비교한다