package quiz17;
public class Validation {
/* 문제1
* 주민번호 검증메서드 masking(String)
* 마스킹 메서드는 주민번호값이 매개변수로 들어올 때
* 950101-*******로 마스킹 처리하여 리턴하는 static메서드를 만들어주세요.
*
* 1. 문제의 간소화를 위해 생년월일은 정상범위라고 가정합니다.
* 2. 13자리가 아니거나, 남,여(1, 2, 3, 4) 가 아니라면 throws처리합니다.
* 3. 주민번호는 - 를 포함해서 받을 수 있습니다.
* 4. 남, 여에 대한 정보를 출력해줍니다.
*
* masking메서드를 만들어주세요
* 검증데이터 950101-1000000 -> 남자
* 검증데이터 9501012000000 -> 여자
* 검증데이터 950101-5000000 -> 예외
* 검증데이터 9501015000000 -> 예외
* 검증데이터 950101511111 -> 예외
*/
public static String masking(String s) throws Exception{
String answer="";
String s2="";
s=s.replace("-", "");
s2=s.substring(6);
if(s.length()==13&&s2.charAt(0)>='1'&&s2.charAt(0)<='4') {
if(s2.charAt(0)=='1'||s2.charAt(0)=='3') {
System.out.println("남자");
s2=s2.replaceAll("[0-9]","*");
answer+=s.substring(0,7)+"-"+s2;
}else if(s2.charAt(0)=='2'||s2.charAt(0)=='4') {
System.out.println("여자");
s2=s2.replaceAll("[0-9]","*");
answer+=s.substring(0,7)+"-"+s2;
}else{
}
}else {
throw new Exception("오류");
}
return answer;
}
/* 문제2
1. String palindromeCheck(String)함수는 매개변수로 String 값을 받아, 회문 여부를 검사하는 static 메서드입니다.
2. 회문: 똑바로 읽으나 거꾸로 읽으나 똑같은 단어나 문장.
3. ex) 다시 합창 합시다, 다 같은 것은 같다, 아 좋다 좋아 등
4. 문장은 공백을 포함하여 받을 수 있습니다.
5. 회문이라면 "회문입니다", 아니라면 "회문이 아닙니다" 를 리턴합니다.
6. 힌트)
* 함수를 이용하여 공백을 제거하세요. 힌트: replace()
* 문장의 길이의 중간값을 구하세요.
* 첫문장과, 마지막문장을 비교하며 중간으로 이동
* for문에서 charAt()을 사용해서 반대로 잘라 붙이세요. (or 빌더를 이용 하여 문자를 뒤집어 비교)
*/
public static String palindromeCheck(String s) {
s=s.replaceAll(" ","");
int m = s.length()/2+1;
for(int i=1;i<=s.length()-m;i++) {
if(s.charAt(m-i-1)!=s.charAt(m+i-1)) {
return "회문이 아닙니다";
}
}
return "회문입니다";
}
}
조건을 만족하지 않을 때 예외가 발생하기 때문에 throw와 throws를 사용.
switch문으로도 만들 수있다. switch문은 case1, case3 아래 break, case2, case4아래 break. default에 throw.
main
package quiz17;
public class MainClass {
public static void main(String[] args) {
try {
System.out.println(Validation.masking("950101-4000000"));
} catch (Exception e) {
//e.printStackTrace();
System.out.println(e.getMessage());
}
System.out.println(Validation.palindromeCheck("다 같은 것은 같다"));
}
}
여자
9501014-*******
회문입니다
'JAVA' 카테고리의 다른 글
221018 Math (0) | 2022.10.18 |
---|---|
221018 StringBuilder (0) | 2022.10.18 |
221018 API System, String (0) | 2022.10.18 |
221018 API, Object (0) | 2022.10.18 |
221017 Throw 실습 (0) | 2022.10.17 |