-
※문제. 사용자의 전화번호를 입력받고, 11자리의 문자형 배열에 지정한 후 가운데 4자리를 *로 가리기. 단, 원본 배열값은 변경 없이 배열 복사본으로 변경할 것.
더보기1234567891011121314151617public void test1() {Scanner sc = new Scanner(System.in);System.out.println("전화번호 입력 : ");String phoneNum = sc.next();char[] original = new char[phoneNum.length()];for(int i = 0; i < phoneNum.length(); i++) {original[i] = phoneNum.charAt(i);System.out.print(original[i]);}System.out.println();char[] copy = original.clone();for(int j = 0; j < phoneNum.length(); j++) {if(j > 2 && j < 7)copy[j] = '*';System.out.print(copy[j]);}}cs 나는 clone메소드를 이용해서 변경했는데 System.array나 for문을 이용해서도 문제 풀이가 가능하다.
개인적으로 clone()이 배열을 복사했음을 알기에 가장 직관적으로 한 줄로 끝낼 수 있어서 좋다.
+) 여기에 더해 선생님이 substring 메소드를 이용하는 방법도 있다고 하셔서 해봤다.
1234567public void test2() {Scanner sc = new Scanner(System.in);System.out.println("전화번호 입력 : ");String phoneNum = sc.next();String copyNum = phoneNum.substring(0,3) + "****" + phoneNum.substring(7,11);System.out.println(copyNum);}cs 간단하기는 한데 정보 저장하고 일일히 바꿔주기엔 너무 수고가 많이 들 것 같음.
적은 양의 정보 처리는 이걸 써도 괜찮아 보인다.
String의 경우 직접 수정이 불가하므로 특정 자리의 문자열을 가져와 처리해야 한다는 것에 주의할 것!
더보기123456789101112131415161718192021public void test() {Scanner sc = new Scanner(System.in);System.out.println("주민등록번호 입력 : ");String idNum = sc.next();char[] idArr = new char[idNum.length()];for(int i = 0; i < idNum.length(); i++) {idArr[i] = idNum.charAt(i);}char[] copyArr = new char[idNum.length()];System.arraycopy(idArr, 0, copyArr, 0, idArr.length);for(int j = 0; j < idArr.length; j++) {if(j > 7) {copyArr[j] = '*';}System.out.print(copyArr[j]);}System.out.println();}cs 조금 다른 문제로 주민등록번호 입력해서 뒷자리의 두번째 수부터 *로 가리는 문제.
여기선 arraycopy를 써봤다.
※문제. 배열의 크기로 홀수인 양의 정수를 입력 받아 배열의 중간까지는 1부터 1씩 증가하는 오름차순으로 값을 넣고, 중간 이후부터는 1씩 감소하는 내림차순으로 값을 넣어 출력하는 프로그램을 작성하세요.
더보기12345678910111213141516171819202122232425public void test() {Scanner sc = new Scanner(System.in);System.out.println("배열 크기 입력(홀수) : ");int num = sc.nextInt();int[] arr = new int[num];int str = 1;if(num % 2 == 0) {System.out.println("짝수를 입력하셨습니다. 프로그램을 종료합니다.");return;}for(int i = 0; i < num; i++) {if( i < num/2) {arr[i] = str++;}else {arr[i] = str--;}}for(int j = 0; j < num; j++) {System.out.println(arr[j]);}}cs 7을 입력하면 [1, 2, 3, 4, 3, 2, 1]이 출력되도록 하는 프로그램.
일단 앞에서 유효성 검사를 통해 짝수는 걸러내 준다.
for문 안에 if문을 통해 num/2 이전까지는 증가변수를, 이후부터는 감소변수를 대입했다.
선생님이랑 답안 똑같으면 괜히 기분 좋다:) 더 열심히 해야지.
'혼자 있는 방 > Java' 카테고리의 다른 글
Test(1) (0) 2021.06.28 Homework(7) (0) 2021.06.25 Homework(5) (0) 2021.06.23 Homework(4) (0) 2021.06.22 Homework(3) (0) 2021.06.21 댓글