본문 바로가기

Programming/생각해보기

어떻게 해야 null을 입력하면 루프가 종료 될까

문자열 배열에 데이터를 입력후 enter를 입력하면 종료. 그리고 입력한 데이터 만큼의 배열 길이를 출력하는 코드에 대해서 생각해 봤다.

 

동적 배열이나 거창한 자료구조를 사용한 것이 아닌 문자열 관련 메서드 + 배열 복사를 사용하여 작성해보았다.

public static void main(String[] args) {

        final int LENGTH = 10;		//	배열의 길이 임의로 선언
		Scanner kb = new Scanner(System.in);
		String[] strArr = new String[LENGTH];
		int count = 0;		//	새로 생성할 배열의 길이 초기화
		
		//	배열의 길이만큼 + 다음에 읽을 값이 있는지(hasNextLine() == true) 검사
		for (int i = 0; i < strArr.length && kb.hasNextLine(); i++) {		
			strArr[i] = kb.nextLine();		//	입력 받아서 배열에 저장함
			
			if(strArr[i].isEmpty())	{		//	enter(공백)을 입력받으면 입력 종료
				break;
            }
		}
		
		while (true) {
        //	배열안에 남아있는 "" 처리 및 새로운 배열의 길이를 정의하기 위한 조건문
			if(strArr[count].equals("")) {
				break;						
			}
			count++;	//	""을 제외한 배열의 길이를 측정
		}
		
		String[] tmpArr = new String[count];	//	count만큼의 길이를 가진 새로운 배열 생성
		
		for (int i = 0; i < tmpArr.length; i++) {
			tmpArr[i] = strArr[i];		//	기존 배열에 있는 요소를 새로운 배열에 복사
		}
        //	기존 배열이 새로운 배열을 가리키도록 함. 기존 배열의 메모리는 제거됨
		strArr = tmpArr;				
		
		System.out.println("매개변수의 개수: " + strArr.length);
		
		for (int i = 0; i < strArr.length; i++) {
			System.out.println("strArr[" + i + "] = \"" + strArr[i] + "\"");
		}
		
		kb.close();
	}

 

'Programming > 생각해보기' 카테고리의 다른 글

최대값 구하기  (0) 2021.05.02
소수 출력  (0) 2021.04.25
배열요소 한 칸씩 뒤로 밀기  (0) 2021.04.25