문자열 배열에 데이터를 입력후 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 |