본문 바로가기
그 외 프로그래밍 언어/Java

자바, 배열

by Dreaming Coder 2021. 11. 29. 22:16

 


 

반복문에 대한 글은 지난 포스트에서 끝났습니다.

하지만 끝났다고 해도 앞으로도 가끔 등장할 겁니다.

이제는 배열에 대해서 배워봅시다.

 

 

 

지난 포스트

 

자바, for문을 이용해서 별 찍기

이번 글이 반복문 마지막 글입니다. 마지막으로 for문을 이용해서 별을 쌓아보도록 합시다. 지난 포스트 자바, for문을 이용해서 구구단 출력하기 반복문 포스트는 다음이 마지막 포스트가 될 것

gogogameboy.tistory.com

 

 

 

회원 가입을 하는 프로그램을 만들어봅시다

 

자바를 이용해서 회원 가입하는 프로그램을 만든다고 해봅시다.
회원 가입을 하려면 중복된 아이디를 체크하는 기능이 있어야겠죠?
기존에 가입되어 있는 ID들 중에 새로 입력한 ID와 같은 ID가 있는지 검사하고, 중복된 ID를 입력했을 경우에는 "중복된 ID입니다."라고 알려주는 기능을 구현해봅시다.

 

일단, 배열이라는 것을 아직 배우지 않았다면 어떻게 만들어야 할지..

지금까지 배운 내용들만으로 그런 기능을 만들어봅시다.

 

 

 

import java.util.Scanner;

public class Ex01_배열모를때 {

	public static void main(String[] args) {
		// 1) String 변수 5개 생성하고 ID 저장하기
		String member1 = "yoon";
		String member2 = "kim";
		String member3 = "Choi";
		String member4 = "Park";
		String member5 = "Jang";
		
		// 2) 새로 가입하고 싶은 아이디 입력받기
		Scanner sc = new Scanner(System.in);
		System.out.print("새로 생성할 ID를 입력해주세요. ");
		String input = sc.next();	// Scanner를 통해 문자열을 입력받아서 input변수에 저장
		
		// 3) 중복체크
		// => 5명 중에 input이랑 같은 값이 있다면 "중복"이라고 띄워주기
		if(member1.equals(input)) {
			System.out.println("중복된 ID입니다. 다른 ID를 입력해주세요.");
		}else if(member2.equals(input)) {
			System.out.println("중복된 ID입니다. 다른 ID를 입력해주세요.");
		}else if(member3.equals(input)) {
			System.out.println("중복된 ID입니다. 다른 ID를 입력해주세요.");
		}else if(member4.equals(input)) {
			System.out.println("중복된 ID입니다. 다른 ID를 입력해주세요.");
		}else if (member5.equals(input)) {
			System.out.println("중복된 ID입니다. 다른 ID를 입력해주세요.");
		}

	}

}

대략 위와 같이 만들어야 할 겁니다.

그런데 회원이 5명 뿐인 웹사이트가 있을까요?

만약 회원이 만명이라면..? 십만 명이라면..?

일일이 저렇게 아이디를 하나하나 다 쓰면서 코드를 짜기에는 한계가 있을 것입니다.

 

그리고 5명의 회원의 ID를 각각 따로 변수를 만들었습니다.

이 5개의 변수들은 규칙이 없고 일관성 없이 따로 떨어져 있습니다.

그래서 반복문을 돌릴 수도 없습니다.

 

 

 

 

배열

 

import java.util.Scanner;

public class Ex02_배열 {

	public static void main(String[] args) {
		// 회원가입 시 ID 중복체크 기능 구현하기
		// 1) 회원 다섯명 아이디 배열에다가 저장해놓기
		String[] Ids = {"yoon", "kim", "park", "choi", "jang"};
		
		// 2) 새로 가입하고 싶은 ID 입력하기
		Scanner sc = new Scanner(System.in);		// Scanner 도구 생성 => 도구이름 : sc
		System.out.print("새로 생성할 ID를 입력해주세요. ");	// 출력
		String input = sc.next();		// sc를 통해서 문자열 데이터 입력받아서 input변수에 저장
		
		// 3) 한명씩 검사하면서 중복되는 ID가 있으면 "중복"이라고 띄우기

		// 0부터 4까지 1씩 증가하는 for문 생성
		for (int i=0; i<Ids.length; i++) {
			// i번째 ID와 input을 비교
			if (Ids[i].equals(input)) {
				System.out.println("중복된 ID입니다. 다른 ID를 입력해주세요.");
			}
			
		}

	}

}

위의 코드를 살펴봅시다.

 

String[] Ids = {"yoon", "kim", "park", "choi", "jang"};

이 코드가 배열입니다.

데이터 타입은 문자(String)로 선언을 했고, 배열을 만들 때에는 데이터 타입 옆에 [ ](대괄호)를 써주셔야 합니다.

 

그다음, 배열의 이름은 Ids라고 붙여주었습니다.

이름이야 아무렇게나 마음에 드는 대로 지어도 오류는 생기지 않지만,

배열 안에는 복수의 데이터들이 들어가기 때문에 보통 이름 끝에 s를 하나 더 붙여줍니다.

 

그리고 { }(중괄호) 안에 들어갈 데이터들은 ,(콤마)로 구분을 해주면서 넣어줍니다.

위의 코드는 스트링 타입의 데이터라서 ""(큰 따옴표)를 붙였지만, 숫자인 경우에는 당연히 따옴표는 필요 없습니다.

 

 

 

 

배열의 이해를 위해서 그림을 가져왔습니다.

배열에 위와 같은 5개의 정수를 넣었다고 칩시다.

배열에 들어간 데이터는 인덱스 값을 가지게 되고, 그 인덱스는 0에서부터 시작합니다.

그래서 배열에 넣은 데이터를 불러올 때는 배열명[인덱스 값]으로 불러옵니다.

예를 들어, 위의 코드에서 "kim"이라는 ID를 불러오기 위해서는 Ids[1]이라고 적으면 됩니다.

 

 

 

for (int i=0i<Ids.lengthi++) {
if (Ids[i].equals(input)) {
System.out.println("중복된 ID입니다. 다른 ID를 입력해주세요.");
}
}

 

이제 마지막으로 이 코드들을 살펴봅시다.

ID 중복 검사를 반복문인 for문으로 돌렸습니다.

int 타입의 i라는 변수를 선언하고 0을 넣었습니다.

그리고 i가 Ids.length보다 작다면 for문은 계속 반복될 겁니다.

 

여기서 Ids.length란, Ids라는 배열 안에 들어있는 데이터의 개수입니다.

현재 다섯 개의 ID가 들어가 있기 때문에 현재 Ids.length의 값은 5입니다.

즉, for문 안에 i는 5와 같은 값이 되기 전까지 i++로 인해 1씩 늘어나면서 계속 반복문을 실행하게 될 겁니다.

 

if문의 조건문 안에 들어있는 Ids[i].equals(input)는 나중에 배울 메소드라는 내용이 잠깐 먼저 나온 것인데,

Ids[i]와 input의 값이 같은지 비교를 하는 것입니다.

기존에 있던 ID인 Ids[i]의 값과 키보드로 입력을 받은 input의 값이 같다면 true가 되면서 if문이 실행이 되는 구조입니다.

 

 

 

위의 배열 코드가 필요하신 분은 아래에서 잘라내기를 해주세요.

 

위의 소스 코드는 PC에서 드래그 후,
ctrl+x로 잘라내서 다른 곳으로 붙여넣기가 가능합니다.
ctrl+c(복사)는 불가능합니다.

 

 

 

 

 

 

다음 포스트

 

자바, 배열의 선언과 생성

지난 포스트에서 배열에 대해서 배웠습니다. 코드도 보여주면서 배열의 선언과 생성도 다 했었는데 이런 제목으로 다시 글을 쓰는 이유는, 배열을 선언하는 또 다른 방법도 있기 때문입니다. 지

gogogameboy.tistory.com

 

 

 


이 글이 도움이 됐다면 하단의 공감 버튼을 꾹 눌러서
빨간 하트로 만들어주세요.
지인에게 보여주고 싶은 글이었다면
공감 버튼 옆을 클릭해서 SNS 공유해주세요.
댓글은 블로그 운영에 큰 힘이 됩니다.

 


 


댓글