[문제1]
- 스캐너에서 주민등록값을 입력받음
- 한글자씩 유효성 검증
- 9 5 1 2 2 6 - 1 2 3 4 5 6 7
*2 *3 *4 *5 *6 *7 *8 *9 *2 *3 *4 *5 (마지막은 검증)
- 총합을 11로 나눈 나머지를 구함
- 11에서 나머지를 빼고, 뺀 결과값이 검증용 숫자랑 같은지 비교
- 만약 뺀 나머지가 2자리 이상이면 결과값을 10으로 나눠라
- 메인코드를 완성하세요
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("주민 번호 입력 : "); //991225-1234567
String jumin = sc.next();
//Quiz3.주민등록번호 유효성 검증
//예시) 9 5 1 2 2 6 - 1 2 3 4 5 6 7
// *2 *3 *4 *5 *6 *7 *8 *9 *2 *3 *4 *5 (마지막은 검증)
//총합을 11로 나눈 나머지를 구한다
//11에서 나머지를 빼고, 뺀 결과값이 검증용 숫자랑 같은지 비교
//만약 뺀 나머지가 2자리 이상이면 결과값을 10으로 나눠라
}
[코드 완성 예시]
더보기
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("주민 번호 입력 : "); //991225-1234567
String jumin = sc.next();
//Quiz3.주민등록번호 유효성 검증
//예시) 9 5 1 2 2 6 - 1 2 3 4 5 6 7
// *2 *3 *4 *5 *6 *7 *8 *9 *2 *3 *4 *5 (마지막은 검증)
//총합을 11로 나눈 나머지를 구한다
//11에서 나머지를 빼고, 뺀 결과값이 검증용 숫자랑 같은지 비교
//만약 뺀 나머지가 2자리 이상이면 결과값을 10으로 나눠라
int sum = 0;
jumin = jumin.replace("-", "0");
for(int i=0; i <jumin.length();i++) {
char c = jumin.charAt(i);
String c1 = String.valueOf(c);
int charNum = Integer.parseInt(c1);
if(i >=0 && i<= 5) {
sum += charNum * (i+2);
} else if(i==6) {
sum += 0;
} else if(i>=7 && i<=8) {
sum += charNum * (i+1);
} else if(i>=9 && i<=12) {
sum += charNum * (i-7);
}
}
System.out.println("총 합계는 ? : " + sum);
int other = 11 - (sum % 11); //11에서 나머지 뺀 값
System.out.println("나머지 출력 : " + other);
char e = jumin.charAt(13);
String e1 = String.valueOf(e);
int endNum = Integer.parseInt(e1);
boolean result = true;
if(other >= 10) {
result = ((other / 10) == endNum);
} else {
result = (other == endNum);
}
if(result) {
System.out.println("유효성 검증 성공");
} else {
System.out.println("유효성 검증 실패");
}
}
① 문자열, 숫자, 문자형 각각 변환 및 접근 방법을 그릴 수 있어야 함
- valueOf, parseInt etc..
② charAt을 사용해서 각 코드별 검증을 진행할 수 있어야 함
③ 수의 패턴을 확인하고, 도출 할 수 있어야 함
[문제2]
- 코드의 통일되지 않는 부분을 확인하고 통일해라
- 공백을 제거해라
- WeatherDTO의 배열에 지역별 내역을 담아라
- 총 4개의 지역을 나눠라
- init() 메서드를 완성하세요
public class WeatherService {
private StringBuffer sb;
public WeatherService() {
this.sb = new StringBuffer();
this.sb.append("서울 , 29.3 - 맑음 - 60");
this.sb.append("- 부산 , 33.6 - 흐림 - 90");
this.sb.append("- 제주 , 26.5 - 눈 - 30");
this.sb.append("- 광주 , 10.6 - 태풍 - 80");
}
//this.sb.append하나를 하나의 WeatherDTO객체로 만들어서 출력하세요
public void init() {
}
}
}
[코드 완성 예시]
더보기
public class WeatherService {
private StringBuffer sb;
public WeatherService() {
this.sb = new StringBuffer();
this.sb.append("서울 , 29.3 - 맑음 - 60");
this.sb.append("- 부산 , 33.6 - 흐림 - 90");
this.sb.append("- 제주 , 26.5 - 눈 - 30");
this.sb.append("- 광주 , 10.6 - 태풍 - 80");
}
//this.sb.append하나를 하나의 WeatherDTO객체로 만들어서 출력하세요
public void init() {
String sb1 = this.sb.toString();
String sb2 = sb1.replace(",", "-");
String [] ar = sb2.split("-");
for(int i = 0; i <ar.length ; i++) {
ar[i] = ar[i].trim(); //
//System.out.println(ar[i]);
}
WeatherDTO [] wArr = new WeatherDTO[ar.length / 4]; //4개를 기준으로 나눌거니까
//배열의 공간만 생긴것이지 배열에 할당된 객체가 없음
for (int i=0; i<wArr.length; i++) {
WeatherDTO wd = new WeatherDTO();
wArr[i] = wd;
}
for (int i=0 ; i < ar.length / 4; i++) {
wArr[i].setCity(ar[i*4]);
wArr[i].setGion(Double.parseDouble(ar[i*4 + 1]));
wArr[i].setStatus(ar[i*4 + 2]);
wArr[i].setHumidity(Integer.parseInt(ar[i*4 + 3]));
}
}
}
ⓛ 공백제거 및 ","를 "-"로 변경 접근
② 배열 생성과 동시에 객체를 배열에 할당하는 로직을 그릴 수 있어야 함
③ 그림을 그려서 패턴을 빠르게 파악할 수 있어야 함
728x90
'Java > [문제]' 카테고리의 다른 글
[국비][문제] 배열에서 필요한 것 찾고, 지운 후 새로운 배열에 담기 (0) | 2024.06.06 |
---|---|
[국비][문제] 확장자 파일 일치 여부 판단, 소속 글자 여부 판단 (0) | 2024.06.03 |