배열 (Array) - 실습문제

DONI·2021년 8월 10일
0

Java

목록 보기
16/46
post-thumbnail

문제

사용자가 입력한 배열의 길이만큼의 문자열 배열을 선언 및 할당하고 배열의 인덱스에 넣을 값 역시 사용자가 입력하여 초기화 하시오. 단, 사용자에게 배열에 값을 더 넣을 것인지 물어보고 몇 개를 더 입력할 건지, 늘린 곳에 어떤 데이터를 넣을 것인지 받고, 사용자가 더 이상 입력하지 않겠다고 하면 배열 전체 값을 출력하시오.


입출력 예시

배열의 크기 입력 : 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();
	}
}

🏹 문자열 대소문자 변경 메서드

  • toUpperCase( ) : 대상 문자열을 모두 대문자로 변환
  • toLowerCase( ) : 대상 문자열을 모두 소문자로 변환

🏹 equals( ) VS ==

  • equals( ) 메서드 : 비교하고자 하는 두 대상의 데이터 값 자체를 비교 ⭐ 기본 자료형 불가
    예) str.equals("Hello World") 💥 단, 변수가 null이라면 에러 발생

  • == 연산자 : 비교하고자 하는 두 대상이 저장된 메모리 공간의 주소값을 비교
    🔍 String은 참조형 변수(클래스)로, String 타입의 변수를 선언하면 문자열이 저장된 Heap 메모리 영역의 주소값이 변수에 저장된다. 때문에 같은 값을 부여하더라도 주소값은 서로 다를 수 있으므로 == 연산자로 값을 비교할 수 없다.

profile
틀린 내용이 있다면 댓글 또는 이메일로 알려주세요 ❤ꔛ❜

0개의 댓글