import java.util.Scanner;
/*
메쏘드
반환형 countChar(매개변수부){
}
매개변수부 : 메소드호출부에서 받아오는 인자값(인수값)
반환형 : 반환(return)할 것의 자료형
*/
//countA 메소드(함수)
//문자열(String)을 받아서 A의 갯수(int)를 세서 return해줌.
public class Quiz_05 {
public static int countA(String a) {
int count=0;
char[] words = a.toCharArray(); //매개변수인 String형 변수 a에 들어있는 문자열을 Char형 배열참조변수 words에 한 인덱스당 한글자씩 저장한 배열을 만든다
for(int i=0;i<words.length;i++) { //배열의 인덱스에 들어있는 값들을 for문을 이용하여 하나하나 확인이 가능하다
if(words[i]=='A' || words[i]=='a') { //배열의 값이 A나 a와 일치하는지 확인
count++; //일치하면 count를 증가시킨다.
}
}
return count; //for문이 끝난 후 최종적으로 알파벳 A의 count갯수를 return한다
}
public static int countALPABET(String a,String b) {
int count=0;
char[] words = a.toCharArray(); //매개변수 String형 변수 a에 들어있는 문자열을 Char형 배열참조변수 words에 한 인덱스당 한글자씩 저장한 배열을 만든다
char alphabet=b.charAt(0); //char형 변수 alphbet에 매개변수 String형변수 b의 0번째 글자를 character값으로 가져온것을 저장한다
for(int i=0;i<words.length;i++) { //배열의 인덱스에 들어있는 값들을 for문을 이용하여 하나하나 확인이 가능하다
if(words[i]==alphabet || words[i]==(alphabet+32) || words[i]==(alphabet-32)) {
//배열의 값이 char형변수 alphabet에 저장된 값과 같은지 확인. 대소문자 구별없이 카운트하고 싶어서 or연산으로 alphabet과 같거나/alphabet에 +32 하거나 -32 한 아스키코드와 같은지 확인
count++; //일치하면 count를 증가시킨다.
}
}
return count; //for 문이 끝난 후 최종적으로 입력받은 알파벳의 count갯수를 return한다.
}
//교수답안
public static int countChar(String target, char ch) {
int count=0;
for(int i=0;i<target.length();i++) {
if(target.charAt(i)==ch) {
count++;
}
}
return count;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("A 외에 어떤 알파벳의 갯수를 세갰습니까?");
String alphabat=sc.nextLine();
System.out.println("A와 "+alphabat+"의 갯수를 셀 문자열을 입력하세요 > ");
String str=sc.nextLine();
System.out.println("");
System.out.println(alphabat+"의 갯수 = " + countALPABET(str,alphabat));
System.out.println("A 의 갯수 = " + countA(str));
System.out.println(countChar("ASDFWEGGAGS",'G'));
/*
*
* Why? println까지 메쏘드에 넣으면 되는데 굳이 return으로 수만 받는가?
* 재사용성 때문에~~~~~~~~~~~~~~~~~~
* 메쏘드에서 구한 값을 현재의 println뿐만 아니라 다른 곳에 보내야/사용해야할 경우가
* 앞으로 많아지기 때문에, 사용할 용도가 다양해졌을때 결과값(return)을 받아
* 개발자가 그 return값을 어떻게 사용할지 정해서 코드를 쓰는게 더 효율적
* """""최대한 범용성 있게"""""
* 메쏘드의 이름과 딱 맞는 행동만 정해주는게 좋음=행동에 맞는 메쏘드 이름을 정해주는게 좋다.
*
*/
}
}
Comment