사용자가 입력한 배열의 길이만큼의 문자열 배열을 선언 및 할당하고 배열의 인덱스에 넣을 값 역시 사용자가 입력하여 초기화 하시오. 단, 사용자에게 배열에 값을 더 넣을 것인지 물어보고 몇 개를 더 입력할 건지, 늘린 곳에 어떤 데이터를 넣을 것인지 받고, 사용자가 더 이상 입력하지 않겠다고 하면 배열 전체 값을 출력하시오.
배열의 크기 입력 : 2
1번째 문자열 : welcome
2번째 문자열 : to
값을 더 입력하시겠습니까? (Y/N) : Y
추가할 개수 : 1
3번째 문자열 : JAVA
값을 더 입력하시겠습니까? (Y/N) : N
[welcome, to, JAVA]
import java.util.*;
public class Main {
public static void main(String[] args) {
// 문제 14 : 입력한 배열 길이만큼 문자열 배열 선언 및 할당, 초기화
Scanner sc = new Scanner(System.in);
System.out.print("배열의 크기 입력 : ");
String[] arr = new String[sc.nextInt()];
for (int i = 0; i < arr.length; i++) {
System.out.print(i + 1 + "번째 문자열 : ");
arr[i] = sc.next();
}
while (true) {
System.out.print("값을 더 입력하시겠습니까? (Y/N) : ");
String plus = sc.next();
if (plus.toUpperCase().equals("Y")) {
System.out.print("추가할 개수 : ");
String[] arr2 = new String[arr.length + sc.nextInt()];
System.arraycopy(arr, 0, arr2, 0, arr.length);
for (int i = arr.length; i < arr2.length; i++) {
System.out.print(i + 1 + "번째 문자열 : ");
arr2[i] = sc.next();
}
arr = arr2;
} else if (plus.toUpperCase().equals("N")) {
System.out.println(Arrays.toString(arr));
break;
} else {
System.out.println("잘못 입력하셨습니다. 다시 입력해주세요.");
continue;
}
}
sc.close();
}
}
equals( ) 메서드 : 비교하고자 하는 두 대상의 데이터 값 자체를 비교 ⭐ 기본 자료형 불가
예) str.equals("Hello World")
💥 단, 변수가 null이라면 에러 발생
== 연산자 : 비교하고자 하는 두 대상이 저장된 메모리 공간의 주소값을 비교
🔍 String은 참조형 변수(클래스)로, String 타입의 변수를 선언하면 문자열이 저장된 Heap 메모리 영역의 주소값이 변수에 저장된다. 때문에 같은 값을 부여하더라도 주소값은 서로 다를 수 있으므로 == 연산자로 값을 비교할 수 없다.