1. EASY
쉬운 문제이지만 순간 생각이 나지 않았다. 다음에는 바로 기억해야지
public void method8() {
//정수 배열크기5, 1~10 사이의 짝수 담기
int[] arr = new int[5];
int num=0;
for(int i=0; i<arr.length; i++) {
arr[i] = num+=2;
}
for(int i=0; i<arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println("arr의 길이 : " + arr.length); //길이
System.out.println("arr의 해시코드 : " + arr.hashCode()); //주소값
arr = new int[10];
System.out.println("======= 크기변경 후 arr =======");
System.out.println("arr의 길이 : " + arr.length);
System.out.println("arr의 해시코드 : " + arr.hashCode()); //주소 완전히 새로 만들어짐
}
1) 배열에 짝수(1~10사이) 담기
→ int num = 0; 만들고 num+=2 를 하여 1~10 사이 짝수를 담는다.
2)
변경 전 arr : int[ ] arr = new int[5];
변경 후 arr : arr = new int[10]; → 주소 완전히 새로 만들어짐
2. HARD
배열에 대해 배우고 실습문제를 풀어봤는데, 지금은 풀 수 있지만
처음 풀 때는 어려웠던 문제라서 정리해두었다.
1. 나와야 할 결과 (실제로 줄간 간격은 없는 것으로 한다.)
배열의 크기 입력 : 2
1번째 문자열 : welcome
2번째 문자열 : to
값을 더 입력하시겠습니까?(Y/N) : Y
추가할 개수 : 1
3번째 문자열 : JAVA
값을 더 입력하시겠습니까?(Y/N) : N
[welcome,to,JAVA]
2. 구현 코드
public void method3() {
Scanner sc = new Scanner(System.in);
System.out.print("배열의 크기 입력 : ");
String[] strArr = new String[sc.nextInt()];
sc.nextLine();
for(int i=0; i<strArr.length; i++) {
System.out.print((i+1) + "번째 문자열 : ");
strArr[i] = sc.nextLine();
}
while(true) {
System.out.print("값을 더 입력하시겠습니까?(Y/N) : ");
String answer = sc.nextLine();
if(answer.toUpperCase().equals("Y")) {
System.out.print("추가할 개수 : ");
int add = sc.nextInt();
String[] newArr = new String[strArr.length + add];
System.arraycopy(strArr, 0, newArr, 0, strArr.length);
sc.nextLine();
for(int i=strArr.length; i<strArr.length+add; i++) {
System.out.print((i+1) + "번째 문자열 : ");
newArr[i] = sc.nextLine();
}
strArr = newArr;
}else if(answer.toUpperCase().equals("N")) {
System.out.println(Arrays.toString(strArr));
break;
}
}
}
1) 입력받은 크기의 배열을 [ strArr ]이라는 이름으로 생성한다.
String[] strArr = new String[sc.nextInt()]
2) nextInt( ) --> nextLine( ) 을 사용하므로 버퍼를 빼준다.
sc.nextLine();
3) for문을 이용하여 몇 번째 문자열에 어떤 값을 넣는지 입력받는다.
for(int i =0; i< strArr.length; i++) {
System.out.print((i+1) + "번째 문자열 : ");
strArr[i] = sc.nextLine();
4) while문으로 "값을 더 입력하시겠습니까?" 물음을 반복시킨다.
5) "값을 더 입력하시겠습니까?" 에 대한 대답이 "Y" 또는 'y'인 경우
String[] newArr = new String[ strArr.length + add ]; //새로운 배열 [ newArr ]생성
System.arraycopy( strArr , 0 , newArr , 0 , strArr.length ); //strArr의 값을 newArr으로 복사
6) 새롭게 만들어진 newArr배열을 strArr도 참조하게 해야함
그래야만 "Y"를 입력하여 값을 더 입력한 후(newArr),
"N"을 입력하여 값을 더 입력하지 않아도
맨 처음 strArr이 출력되지 않고 newArr의 값이 출력된다.
strArr = newArr;
7) "값을 더 입력하시겠습니까?" 에 대한 대답이 "N" 또는 'n'인 경우
→ strArr의 값을 출력한다.
System.out.println( Arrays.toString( strArr ) ); //strArr 배열 출력
8) while문을 종료한다
break;
'Java > Java 문제' 카테고리의 다른 글
[코테] level1 - 문자열 (0) | 2021.06.23 |
---|---|
[Java] 객체배열 & mvc 문제 정리1_(객체배열 복사_System.arraycopy( )) (0) | 2021.05.18 |
[Java] 조건문(if, switch)_실습문제 (0) | 2021.05.08 |