2021. 2. 23. 14:02ใ๊ฐ๋ ์ ๋ฆฌ ์์ ์ค/Java
๐ ๋ฐฐ์ด
๐๋ฐฐ์ด์ด๋?
๐ ๋ฐฐ์ด: ๋ฐฐ์ด๋ถํฐ ์๋ฃ๊ตฌ์กฐ ๊ฐ๋ ์ด ๋์ต๋๋ค.
๋ฐฐ์ด์ ์ฌ๋ฌ ๋ณ์๋ฅผ ํ๋์ ๋ฌถ์์ผ๋ก ๋ค๋ฃจ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฒ ์ ๋๋ค. ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๊ทธ ๋ฐ์ดํฐ ๋ ๋งํผ ๋ณ์๋ฅผ ์ ์ธํ๋ค๋ฉด ์ ๋ง ํ์ด ๋๋ ๊ฒ์ด์์.
๋ฐฐ์ด์ ๊ฐ์ ํ์ ์ ์ฌ๋ฌ ๋ณ์๋ฅผ ํ๋์ ๋ฌถ์์ผ๋ก ๋ค๋ฃจ๋ ๊ฒ.
โ๏ธ ์ฌ๋ฌ๊ฐ์ ๋ณ์๋ค์ ํ ์ค(์ ํ์ )๋ก ๋ชจ์ ๋์ ๊ตฌ์กฐ ์ ๋๋ค..
โ๏ธ ๋ฐฐ์ด ์์ ํ๋ํ๋์ ๊ฐ(๋ฆฌํฐ๋ด)๋ค์ ์์๋ผ๊ณ ํ๋ค. (ํ๊ต ์์ ์์ด์ ํ์์ด๋ค. ์ฌ๋์ ๊ฐ์ง๋ง, ํ๊ต ์์ ์๊ธฐ ๋๋ฌธ์ ํ์์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ.)
โ๏ธ ์์์ ์๋ฃํ์ด ๋ฌด์์ธ๊ฐ?๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค.
โ๏ธ ๋ฐฐ์ด์ ์ ์ธํ ๋, ๋๊ดํธ๋ ์๋ฃํ ์์ ๋ถํ๋ ๋๊ณ , ๋ณ์๋ช ์ ๋ถํ๋ ๋ฉ๋๋ค.
์ ์ธ ๋ฐฉ๋ฒ | ์ ์ธ์ ์ |
์๋ฃํ ํ์ [] ๋ณ์์ด๋ฆ; | int[] score; String[] name; |
์๋ฃํ ํ์ ๋ณ์์ด๋ฆ[]; | int score[]; String name; |
โ๏ธ ๋ฐฐ์ด ์์ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ๊ฐ๊ฐ ์์ ๋๋ ๊ฐ๊ฐ์ ๊ตฌ๋ถํ๋ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค. ์ด๋ฅผ ์ํด ๋ฐฐ์ด์ ๋ฒํธ๋ฅผ ๋ถ์ด๊ฒ ๋ฉ๋๋ค. ์ด๊ฒ์ ์์๋ฒํธ๋ผ๊ณ ํ๋ฉฐ, Index ํน์ ์์ธ์ด๋ผ๊ณ ํฉ๋๋ค.
โ๏ธ ์์๋ฒํธ(Index): 0๋ฒ๋ถํฐ ์์ํด์ ๊ธธ์ด - 1๋ฒ(0๋ถํฐ ์์ํ๊ธฐ ๋๋ฌธ์ -1) ๊น์ง 1์ฉ ์ฆ๊ฐํ๋ ์ ์ํ ๋ฒํธ. ๋ฐ๋ผ์ ๊ธธ์ด -1์ด๊ธฐ ๋๋ฌธ์ ์ฐ์ฐ ๋ฒ์๋ฅผ ์ง์ ํ ๋ i < '๋ฐฐ์ด๊ธธ์ด'๋ก ํ๋์ง i <=' ๋ฐฐ์ด๊ธธ์ด - 1'๋ผ๊ณ ํ ์์๋ค.(for ๋ฌธ๊ณผ ๊ฐ๋ค.) ์์๋ฒ์๋ฅผ 'Bound'๋ผ๊ณ ํฉ๋๋ค. ๋ฐฐ์ด์ Index๋ ์์๊ฐ์ ์ฌ์ฉํ์ง ์์ต๋๋ค. (ํ์ด์ฌ์ ์์๊ฐ ์ฌ์ฉ๊ฐ๋ฅํ๋ฉฐ, ๋ฐฐ์ด์ด๋ผ๊ธฐ ๋ณด๋จ List์ด๋ค.)
โ๏ธ ๊ธธ์ด: ์์ ๊ฐ์, ์ต๋ ๊ฐ์๊ฐ ์ ํด์ ธ ์๊ธฐ ๋๋ฌธ์ ์ ์ ๊ตฌ์กฐ(๊ณ ์ ๊ธธ์ด)๋ผ๊ณ ํ๋ค. ์ฝ๋ฉํ ๋ ์ ์ ์ด๋ผ๋ ํํ์ ๋ฏธ๋ฆฌ ์ ํด ๋์ ๊ฒ์ด๋ค๋ผ๊ณ ์ธ์ฐ๋ ๊ฒ์ด ์ข๋ค๊ณ ํฉ๋๋ค. ๋ํ, ๋ฐฐ์ด์ ๊ธธ์ด๋ 0์ผ๋ก๋ ์ ์ธํ ์ ์์ต๋๋ค!
โ๏ธ ๋ฐฐ์ด ์ฒ๋ฆฌ ์์: ์์ฐจ์ ์ผ๋ก ๋ค๋ฃจ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋. ํ์ง๋ง, ๋ฒ์๋ง ์งํจ๋ค๋ฉด ์์ ์ ๊ทผ ๋ฐฉ์์ด ๊ฐ๋ฅํฉ๋๋ค. ์ฆ, 0๋ฒ ๊ฐ๋ค๊ฐ 5๋ฒ ๊ฐ๋ค๊ฐ ์๋ค๊ฐ๋ค ํ ์ ์์ต๋๋ค. ๋จ, ๋ฒ์(๋ช ๋ฒ ๋ถํฐ ๋ช ๋ฒ๊น์ง)๋ ๋ฐ๋์ ์ง์ผ์ผ ํฉ๋๋ค. ์ด๊ฒ ๋๋ฌธ์ ์๊ณ ๋ฆฌ์ฆ์ด ๋์จ๋ค๊ณ ํฉ๋๋ค!
โ๏ธ ๋ฐฐ์ด์ for๋ฌธ๊ณผ ํจ๊ป ์ฌ์ฉ๋๋ค๊ณ ํฉ๋๋ค.
๋ฐฐ์ด ์ ์ธ์ ์์
[์๋ฃํ Type] [๋ณ์๋ช
] = new [์๋ฃํ Type] [];
int arr = new int[5];
// intํ arr ๋ฐฐ์ดํ ๋ณ์์ 5๊ฐ์ ๋ฐฐ์ด(๊ณต๊ฐ)์ ์๋ก ๋ง๋ค๊ฒ ๋ค.
โ๏ธ ๋ฐฐ์ด์ ์ ์ธ์ ํ์ํ ๊ฒ: ์์์ ์๋ฃํ(๋ชจ๋ ์์๋ค์ ์๋ฃํ์ด ๋ชจ๋ ๊ฐ์์ผ ํ๋ค.)์ ์ ํด์ผ ํฉ๋๋ค. ๋ฐฐ์ด ์ด๋ฆ ์ ์(๋ณดํต ๋ณต์ ํํ ์ฌ์ฉ), ๋ฐฐ์ด๋ช ์ ์๋ฌธ์๋ก ์จ์ผ ํฉ๋๋ค. [] : ๋๊ดํธ ์์ ๊ธธ์ด ํน์ ๊ฐ์๋ฅผ ๊ณ ์ ํ์ฌ ์ ์ํฉ๋๋ค. int ๋ผ๊ณ ์๋ฃํ์ ์จ ์ฃผ๋ฉด ์ ์ ๊ธฐ๋ณธ ์๋ฃํ์ด๋ผ๊ณ ํํํ๊ณ , int[]๋ผ๊ณ ์จ ์ฃผ๋ฉด ์ ์ ์๋ฃ ๋ฐฐ์ดํ ์ด๋ผ๊ณ ํํ
์์ ์ฝ๋: ์ ์ 10๊ฐ๋ฅผ ์์๋กํ๋ ๋ฐฐ์ด์ ์ ์ธ.
int[] arr = {10, 20, 30, 40}; // ์ค๊ดํธ ์์๋ ๋ฐฐ์ด์์ ์ด๊ธฐ๊ฐ๋ค์ ๋ฃ๋ ๊ณณ
// new int[]; ์์ ๊ฐ์ด ์ ์ธ ์ ์ผ์ชฝ ๋ด์ฉ์ ์๋ต์ด ๊ฐ๋ฅ.
//์์ ๊ฐ์ด ์ด๊ธฐ๊ฐ์ ์ค๊ดํธ ์์ ๋ฃ์ด์คฌ์ ๋ ์๋์ผ๋ก ๊ฑฐ๊ธฐ์ ๋ง๊ฒ ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ ์ ํด์ง๊ธฐ ๋๋ฌธ์
//๋ฐ๋ก ๋ฐฐ์ด ๊ธธ์ด๋ฅผ ์ ํ์ง ์์๋ ๋๋ค.
// ํ์ง๋ง new int[]๋ฅผ ์๋ตํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๋ ์๋ค.
int[] score;
score = new int[] { 50, 60 ,70, 80, 90 }; // ์ ์!
score = { 50, 60 ,70, 80, 90 }; // ์์ธ ๋ฐ์! new int[] ์๋ต ๋ถ๊ฐ!
// ์์ ๊ฐ์ด ๋ฐฐ์ด์ ์ ์ธ๊ณผ ์์ฑ์ ๋ฐ๋ก ํ๋ ๊ฒฝ์ฐ์๋ ์๋ต์ด ๋ถ๊ฐ.
// Method๋ฅผ ์ด์ฉํ์ฌ ์ธ์๊ฐ์ ๋ฐฐ์ด์ ์ด์ฉํ๋ ๊ฒฝ์ฐ์๋ ์๋ต์ด ๋ถ๊ฐ
int add(int[] arr) {// ๋ด์ฉ ์๋ต} // add Method ์ ์ธ.
int result = add(new int[] { 100, 90, 80, 70, 60 }); // ์ ์!
int result = add({ 100, 90, 80, 70, 60 }); // ์์ธ ๋ฐ์! new int[] ์๋ต ๋ถ๊ฐ!
arr์ด๋ผ๋ ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ 4์ด๊ณ , Index ๋ฒํธ๋ 0~3๊น์ง ์๋ค. []๊ฐ ํ๋๋ฉด 1์ฐจ ๋ฐฐ์ด, []๊ฐ ๋๊ฐ๋ฉด 2์ฐจ ๋ฐฐ์ด. ์ฌ๊ธฐ์ arr์ ๋ฐฐ์ด๋ช ์ด๊ณ , arr[Index๋ฒํธ]๋ผ๊ณ ํ๋ฉด ์์๋ช ์ ๋๋ค.. ๋๋ intํ ๋ณ์๋ช ์ด๋ผ๊ณ ๋ ํ ์ ์์ต๋๋ค. ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ์ถ๋ ฅํ ๋ arr.length๋ฅผ ์ธ ์ ์๋๋ฐ, ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ ์ ํด์ ธ ์๊ธฐ ๋๋ฌธ์ ์๊ดํธ ์์ด ์ ์ ํฉ๋๋ค. ์ฆ, String.length(); ์๋ ๋ค๋ฆ ๋๋ค. ๊ทธ๋์ arr.length๋ ๊ฐ์ด ์ ํด์ ธ ์์ด์ ํจ์ ํํ๋ก ์ ์ํ์ง ์์ต๋๋ค. ๊ทธ๋์ ์๊ดํธ ์์ด ์ฌ์ฉํ๊ณ , ๋ฌธ์์ด์์๋ ๋์ ๊ธธ์ด์ด๊ธฐ ๋๋ฌธ์ ํจ์ํ์ผ๋ก ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์์ ์์๋ฅผ ์๋์ฒ๋ผ ์ถ๋ ฅํ๋ฉด ์ด๋ค ๊ฐ์ด ๋์ฌ๊น์?
System.out.println("๋ฐฐ์ด๋ช
:" + arr);
System.out.println("์์๋ช
:" + arr[0]);
System.out.println("๋ฐฐ์ด๋ช
:" + arr);
System.out.println("์์๋ช
:" + arr[0]);
System.out.println("๋ฐฐ์ด์ ๊ธธ์ด :" + arr.length);
๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ต๋๋ค.
๋ฐฐ์ด๋ช ์์ ๊ฒฐ๊ณผ๊ฐ์ด ํด์ฌ๊ฐ ํน์ ์๋ณ๊ฐ์ด๋ผ๊ณ ํ๋ ๊ฒฐ๊ณผ๊ฐ ๋์์ต๋๋ค. ์ด๋ฆ์ ์ค๋ณต๋ ์ ์์ต๋๋ค. ํ์ง๋ง, ์๋ณ์ด ๋์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฃผ๋ฏผ๋ฒํธ์ฒ๋ผ ์๋ณ๊ฐ์ ๊ฐ์ด์ผ ํ๋ ๊ฒ์ด์์. @์์๋ ์๋ฃํ(I์ด๋ ์ ์ํ)์ด ๋์ค๊ณ , ๋ค์๋ 165์ง์๋ก ์ด๋ค์ง Memory ์ฃผ์๊ฐ์ผ๋ก ์ค์ ์ฃผ์๊ฐ ์๋ ๋ด๋ถ ์ฃผ์๋ก ์ด ๋ฐฐ์ด์ ์์๊ฐ ์ ๊ธฐ ์๋ค๋ผ๋ ์๋ฏธ์ ๋๋ค. ์ด๋ฆ์ด ๊ฐ๋๋ผ๋ ์๋ณ๊ฐ์ด ๋ค๋ฅด๋ฉด ๊ฒฐ๊ตญ ๋ค๋ฅธ๊ฐ์ ๋๋ค.
public static void main(String[] args) {
// ์ ์ 10๊ฐ๋ฅผ ์์๋ก ํ๋ ๋ฐฐ์ด์ ์ ์ธ (์ด๊ธฐ๊ฐ์ ์๊ณ ์์ ๋)
int[] arr = {10, 20, 30, 40};
System.out.println("๋ฐฐ์ด๋ช
:" + arr);
System.out.println("์์๋ช
:" + arr[0]);
System.out.println("๋ฐฐ์ด์ ๊ธธ์ด :" + arr.length + "\n");
// ์ด๊ธฐ๊ฐ์ ๋ชจ๋ฅผ ๋๋ ๊ณต๊ฐ๋ง ์ก๋๋ค.
int[] score = new int[10]; // ๋งจ ์ค๋ฅธ์ชฝ int ๋ค์ ๋๊ดํธ ์์ ๊ฐ์ ๋ฐฐ์ด์ ๊ณต๊ฐ์ ์๋ฏธํ๋ ๊ฐ.
// score[10] = 100; ๋ฐฐ์ด์ ๊ธธ์ด 0 ~ 9 ๊ธธ์ด๋ก ์ ํ๊ธฐ ๋๋ฌธ์ 10์ด ์๋ค. ์ด๊ฑธ ๋๋ฆฌ๋ฉด ์๋ฌ๊ฐ ๋์ฌํ
๋ฐ, ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ณด๋ฉด ๋ต์ ๋ณด์ธ๋ค.
for (int i = 0; i < score.length; ++i) {
score[i] = i * 1000 + 1; // ๊ฐ ์์๋ค์ ๊ฐ์ ์ ์ฅ.
}
for (int i = 0; i < score.length; ++i) {
// ๋ชจ๋ ์์๋ค์ ๊ฐ์ ์ถ๋ ฅ.
System.out.println(" score์ ๊ฐ์ " + score[i]);
}
}
๐ ์ฐ์ต ๋ฌธ์ : random ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํ์ ์ ์ 12๊ฐ๋ฅผ ์ ์ฅํ ๋ค ์ถ๋ ฅํ์ธ์.
import java.util.Random;
public class ExArray {
public static void main(String[] args) {
// Random Method๋ฅผ ์ฌ์ฉํ์ฌ ํ์ ์ ์ 12๊ฐ๋ฅผ ์ ์ฅํ ๋ค ์ถ๋ ฅํ๊ธฐ
double[] score = new double[12];
Random ran = new Random();
for (int i = 0; i < score.length; ++i) {
score[i] = ran.nextDouble();
}
for (int i = 0; i < score.length; ++i) {
System.out.println(i + "๋ฒ ์์์ ๊ฐ : " + score[i]);
}
}
๊ฒฐ๊ณผ
0๋ฒ ์์์ด ๊ฐ : 0.390993621263256
1๋ฒ ์์์ด ๊ฐ : 0.536600197836725
2๋ฒ ์์์ด ๊ฐ : 0.5395621105107491
3๋ฒ ์์์ด ๊ฐ : 0.9268485629025913
4๋ฒ ์์์ด ๊ฐ : 0.5105145339501515
5๋ฒ ์์์ด ๊ฐ : 0.7336780358293263
6๋ฒ ์์์ด ๊ฐ : 0.18343331413394837
7๋ฒ ์์์ด ๊ฐ : 0.24938027162772047
8๋ฒ ์์์ด ๊ฐ : 0.02841933676657804
9๋ฒ ์์์ด ๊ฐ : 0.0933897314306259
10๋ฒ ์์์ด ๊ฐ : 0.5747654029099003
11๋ฒ ์์์ด ๊ฐ : 0.2878328663541382
๐ ์ฐ์ต ๋ฌธ์ : random ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํ์ 3๋ช ์ ์๋ฅผ ๊ฐ๊ฐ 4๊ฐ์ฉ ์ ์ฅํ ๋ค ์ถ๋ ฅํ์ธ์.
import java.util.Random;
public class ExArray {
public static void main(String[] args) {
// Random Method๋ฅผ ์ฌ์ฉํ์ฌ ํ์ 3๋ช
์ ์ 4๊ฐ์ฉ ์ ์ฅํ ๋ค ์ถ๋ ฅํ๊ธฐ
double[] score = new double[12];
Random ran = new Random();
for (int i = 0; i < score.length; ++i) {
score[i] = ran.nextDouble() * 100;
}
// 4๊ฐ์ฉ ์ถ๋ ฅํ๋๋ฐ, 3๋ฒ ๋ฐ๋ณต
for (int m = 0; m < 12; m+=4) {
System.out.println("--");
for (int i = m; i < (m + 4); ++i) {
System.out.println(i + "๋ฒ ์ ์์ ๊ฐ : " + score[i]);
}
}
}
๊ฒฐ๊ณผ
--
0๋ฒ ์ ์์ ๊ฐ : 5.891083600102487
1๋ฒ ์ ์์ ๊ฐ : 9.004135070427688
2๋ฒ ์ ์์ ๊ฐ : 66.06641699845869
3๋ฒ ์ ์์ ๊ฐ : 85.72453963074238
--
4๋ฒ ์ ์์ ๊ฐ : 84.7848499997297
5๋ฒ ์ ์์ ๊ฐ : 85.76264982010123
6๋ฒ ์ ์์ ๊ฐ : 25.1270911527403
7๋ฒ ์ ์์ ๊ฐ : 42.64100233092587
--
8๋ฒ ์ ์์ ๊ฐ : 59.15502368326526
9๋ฒ ์ ์์ ๊ฐ : 58.327447635030296
10๋ฒ ์ ์์ ๊ฐ : 90.6356638033661
11๋ฒ ์ ์์ ๊ฐ : 91.32192956513906
๐ ๋ฐฐ์ด ์ฒ๋ฆฌ ์ CRUD
๐ CRUD๋?
Create | ์์ฑ | INSERT |
Read(๋๋ Retrieve) | ์ฝ๊ธฐ(๋๋ ์ธ์ถ) | SELECT |
Update | ๊ฐฑ์ | UPDATE |
Delete(๋๋ Destroy) | ์ญ์ (๋๋ ํ๊ดด) | DELETE |
๋ฐ์ดํฐ๋ค์ ์ ์ถ๋ ฅํ๋ ๊ธฐ๋ฅ์ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
๋ฐฐ์ด์ ๊ณ ์ ๊ธธ์ด ๊ตฌ์กฐ ์ ๋๋ค. ์ถ๊ฐ, ์ญ์ ์ ์์ ๊ฐ์๊ฐ ๋ณํ๋ ๊ฒ์ ์๋๋๋ค. ๊ทธ๋ ๋ค๋ฉด ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๋ ๊ฒ์ผ๊น์?
๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ:
1) ๋ ํฐ ๋ฐฐ์ด์ ์๋ก ์์ฑํ๋ค.
2) ๊ธฐ์กด ๋ฐฐ์ด์ ๋ด์ฉ์ ์๋ก์ด ๋ฐฐ์ด์ ๋ณต์ฌํ๋ค.
for๋ฌธ์ ์ด์ฉํ ๋ฐฐ์ด ๋ณต์ฌ ๋ฐฉ๋ฒ ์์
int[] arr = new int[]5;
. . .
int[] tmp = new int[]arr.sength*2]; //๊ธฐ์กด ๋ฐฐ์ด์ด์๋ arr๋ณด๋ค 2๋ฐฐ ๋ ๊ธด ๋ฐฐ์ด tmp๋ฅผ ์ ์ธ.
for(int i = 0; i < arr.length; ++i) {
tmp[i] = arr[i]; // arr[i]์ ๊ฐ์ tmp[i]์ ์ ์ฅ.
arr = tmp; // ์ฐธ์กฐ ๋ณ์ arr์ด ์๋ก์ด ๋ฐฐ์ด์ ๊ฐ๋ฅดํค๊ฒ ๋จ.
์ฌ์ค ์ด๋ฌํ ๋ฐฉ๋ฒ์ ๋น์ฉ์ด ๊ฝค๋ ๋ง์ด ๋ค๊ธฐ ๋๋ฌธ์, ์ฒ์๋ถํฐ ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๋๋ํ๊ฒ ์ก์ ์ฃผ๋ ๊ฒ์ด ์ข๊ธด ํฉ๋๋ค. ํ์ง๋ง, ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๋๋ฌด ํฌ๊ฒ ์ก์๋ฒ๋ฆฌ๋ฉด Memory ๋ญ๋น๋ก ์ด์ด์ง ์ ์๊ธฐ ๋๋ฌธ์ ์์ ์ฝ๋์ฒ๋ผ ๊ธฐ์กด์ 2๋ฐฐ ์ ๋์ ๊ธธ์ด๋ก ๋ฐฐ์ด์ ์์ฑํ๋ ๊ฒ์ด ์ข๋ค๊ณ ํฉ๋๋ค.
์ฐธ๊ณ ๋ก ๋ฐฐ์ด์ ์ฐธ์กฐ๋ณ์๋ฅผ ํตํด์๋ง ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์, ์์ ์ ๊ฐ๋ฅดํค๋ ์ฐธ์กฐ๋ณ์๊ฐ ์๋ ๋ฐฐ์ด์ ์ฌ์ฉํ ์๊ฐ ์์ต๋๋ค. ์ด๋ ๊ฒ ์ธ๋ชจ์๊ฒ ๋์ด ๋ฒ๋ฆฐ ๋ฐฐ์ด์ JVM์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ์ํด์ ์๋์ผ๋ก Memory์์ ์ ๊ฑฐ ๋ฉ๋๋ค.
์ต๋๊ธธ์ด๋ฅผ ์ถ๊ฐ ํ ์ ์์ต๋๋ค.
์ง์ด๋ค์ ๊ฐ๋ (Delete)๋ ๋น์ด์์์ ์๋ฏธํฉ๋๋ค.
๐์ฒซ๋ฒ์งธ, ๋ง์ง๋ง
โ๏ธ[0] ~ [๋ง์ง๋ง]์ ํ์ฌ๊น์ง ์ ์ฅํ ๊ฐ์(๊ธธ์ด)๋ฅผ ๋ํ๋ ๋๋ค. ๊ฒฐ๊ตญ ๋ง์ง๋ง์ ์ ์ฅํ ์์๋ฒํธ๊ฐ 4๋ฒ์ด๋ผ๋ฉด 0๋ฒ ๋ถํฐ 4๋ฒ๊น์ง 5๊ฐ๊ฐ ์ ์ฅ๋์๊ฒ ๊ตฌ๋๋ผ๊ณ ํ๋จํ ์ ์์ต๋๋ค.
๐Delete์ ์ฐธ๊ณ ์ฌํญ
โ๏ธ์ด๊ฒ์ ๋ณดํต 0๊ฐ์ด ์๋์ผ๋ก ๋ค์ด๊ฐ๋๋ค. ๋ฐ์ดํฐ๊ฐ 0๋ณด๋ค ํฐ ๊ฐ๋ค๋ง ์๋ค๋ฉด 0์ '๋น์ด ์๋ค'๋ผ๊ณ ํ๋จํด๋ ๋ฉ๋๋ค. ํ์ง๋ง, 0๋ ๋ฐ์ดํฐ๋ก์จ, ํ์ฉํ๋ค๋ฉด '๋น์ด์๋ค'๋ผ๋ ๊ฐ๋ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ด๋ ต์ต๋๋ค. ์ด ๋๋ ๋ฐ์ดํฐ์ ๋ฒ์๋ฅผ ํ๋จํ์ฌ ํด๋นํ์ง ์๋ ๊ฐ์ ๋น์๋ค ๋ผ๊ณ ์ ์ ํด์ผ ํฉ๋๋ค. ์ฆ, ๋ฐฐ์ด์ ์ถ๊ฐ์ ์ญ์ ๋ฅผ ์ํด '๋น์๋ค'๋ผ๋ ์๋ฏธ๋ฅผ ๊ผญ ์ ์ ํด์ค์ผ ํฉ๋๋ค. ์ด ๋น์์์ ์๋ฏธํ๋ ์ ์๋ฅผ ํ๊ธฐ ์ด๋ ต๋ค๋ฉด ๋น ์๋ฆฌ๋ฅผ ์ฑ์ ์ญ์ ์ ์์๋ค์ ์ด๋์์ผ ์ฑ์ ๋ฒ๋ฆฌ๋ฉด ๋ฉ๋๋ค.
๐ ์ฝ๋ ์์
package array_20210222;
public class ExArray01 {
// ๋ฐฐ์ด score๋ฅผ ํ๋์ ์ ์ธ
static int[] score;
static int idx = 0; // 0๋ฒ ๋ถํฐ ์์ฐจ์ ์ผ๋ก ์ฆ๊ฐํด ๊ฐ๋ค.
public static void main(String[] args) {
// main method ์์ ์ ๊ธธ์ด 20์ธ ๋ฐฐ์ด ์์ฑ.
score = new int [20]; //๋ฐฐ์ดํ ๋ณ์๋ก score ์ ์ธ.
// ๋ฐฐ์ด์ ๊ฐ 30์ ์ถ๊ฐ(์์ฑํ๋ค.)
create(100); // c๋ ์๋ก ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ด ์ถ๊ฐํ๋ค. ๊ฐ์
, ๋ฑ๋กํ๊ธฐ ๋ฑ
create(50);
create(1);
read_list();
// ์์๋ค์ ๊ฐ์ ์ถ๋ ฅํ ๋ชฉ์ ์ '๋ชฉ๋ก๋ณด๊ธฐ(list)' ํจ์ ์ ์ธ.
// => CRUD ์์ R์ ํด๋นํ๋ Read ํน์ Retrive
// read_list();
// ์์ ์ ํ๋ ค๋ฉด ๋๊ตฌ๋ฅผ (๋ฌด์์) ์ผ๋ง๋ก (๋ฌด์์ผ๋ก) ์์ ํ ๊ฒ์ธ์ง๊ฐ ์ ํด์ ธ์ผ ํ๋ค.
update(1, 20); // 1๋ฒ ์์์ ๊ฐ์ 20์ผ๋ก ๋ฐ๊พธ๊ฒ ๋ค.
read_list();
// 0๋ฒ ์์ ์ญ์
delete(0); // ์ญ์ ํ ๋์์ ์๋ณ๊ฐ(Index)๊ฐ์ ์ ํด์ค์ผ ํ๋ค.
read_list();
// ์์ createํจ์๊ฐ 3๋ฒ ํธ์ถ๋๋ฉด์ idx๋ฒํธ๋ 2์ด๋ค. ์๋ ๊ฒ์ ํ๋ฉด
// 3๋ฒ index์ 20์ ๋ฃ๊ณ , 4๋ฒ์ 40์ ๋ฃ๊ฒ ๋๋ค.
create(20);
create(40);
read_list();
}
private static void delete(int i) {
// ์ญ์ ์ ๋ฐฐ์ด์ ๊ธธ์ด๋ ๊ณ ์ ์ฆ, ๋ณํ์ง ์๋๋ค.
score[i] = 0; // ๋ฐฐ์ด 0๋ฒ์งธ ๊ฐ์ 0์ผ๋ก ๋ฐ๊พธ์ด ์ง์ ๋ค.
}
private static void update(int editIndx, int newValue) {
// TODO ๊ฐ์ ๋ฐ๊พธ๋ ๊ธฐ๋ฅ ์ ์
score[editIndx] = newValue;
}
private static void create(int value) {
// ๋ฐฐ์ด์ ์ ๋ฌ๋ฐ์ ๊ฐ์ ์ถ๊ฐ(์ ์ฅ)ํ๊ธฐ
score[ idx ] = value;
++idx;
}
private static void read_list() {
// 0 ~ ๋ง์ง๋ง ์์๊น์ง ๋ชจ๋ ์ถ๋ ฅ
String s = "{";
for (int i = 0; i < score.length; ++i) {
s += score[i] + ", ";
}
s += "}";
System.out.println("Score: " + s );
}
}
๊ฒฐ๊ณผ
Score: {100, 50, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }
Score: {100, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }
Score: {0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }
Score: {0, 20, 1, 20, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }
โ๏ธ ๋๋ฒ์งธ ๋ฐฉ๋ฒ์ผ๋ก๋ Index๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ๋น ๊ฐ์ด ์๊ฒจ ๋ฒ๋ฆฐ ๊ณต๊ฐ์ ์ ๊ฐ์ ๋ฎ์ด์ฐ๋ ๋ฐฉ๋ฒ ์ ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ ๋ ฅ์ ๋ํ ์์๊ฐ ๊นจ์ ธ๋ฒ๋ฆฌ๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๐ ์ฝ๋ ์์
package array_20210222;
public class ExArray02 {
// ๋ฐฐ์ด score๋ฅผ ํ๋์ ์ ์ธ
static int[] score;
static int idx = 0; // 0๋ฒ ๋ถํฐ ์์ฐจ์ ์ผ๋ก ์ฆ๊ฐํด ๊ฐ๋ค.
public static void main(String[] args) {
// main method ์์ ์ ๊ธธ์ด 20์ธ ๋ฐฐ์ด ์์ฑ.
score = new int [20]; //๋ฐฐ์ดํ ๋ณ์๋ก score ์ ์ธ.
// ๋ฐฐ์ด์ ๊ฐ 30์ ์ถ๊ฐ(์์ฑํ๋ค.)
create(100); // c๋ ์๋ก ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ด ์ถ๊ฐํ๋ค. ๊ฐ์
, ๋ฑ๋กํ๊ธฐ ๋ฑ
create(50);
create(1);
read_list();
// ์์๋ค์ ๊ฐ์ ์ถ๋ ฅํ ๋ชฉ์ ์ '๋ชฉ๋ก๋ณด๊ธฐ(list)' ํจ์ ์ ์ธ. => CRUD ์์ R์ ํด๋นํ๋ Read ํน์ Retrive
// read_list();
// ์์ ์ ํ๋ ค๋ฉด ๋๊ตฌ๋ฅผ (๋ฌด์์) ์ผ๋ง๋ก (๋ฌด์์ผ๋ก) ์์ ํ ๊ฒ์ธ์ง๊ฐ ์ ํด์ ธ์ผ ํ๋ค.
update(1, 20); // 1๋ฒ ์์์ ๊ฐ์ 20์ผ๋ก ๋ฐ๊พธ๊ฒ ๋ค.
read_list();
// 0๋ฒ ์์ ์ญ์
delete(0); // ์ญ์ ํ ๋์์ ์๋ณ๊ฐ(Index)๊ฐ์ ์ ํด์ค์ผ ํ๋ค.
read_list();
// ์์ createํจ์๊ฐ 3๋ฒ ํธ์ถ๋๋ฉด์ idx๋ฒํธ๋ 2์ด๋ค. ์๋ ๊ฒ์ ํ๋ฉด 3๋ฒ index์ 20์ ๋ฃ๊ณ , 4๋ฒ์ 40์ ๋ฃ๊ฒ ๋๋ค.
create(20);
create(40);
read_list();
}
private static void delete(int i) {
// ์ญ์ ์ ๋ฐฐ์ด์ ๊ธธ์ด๋ ๊ณ ์ ์ฆ, ๋ณํ์ง ์๋๋ค.
if(0 <= i && i < idx) {
// ์ธ์ ์์๋ก ๋น๊ฒจ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ
for( int k = i; k < score.length-1; ++k) {
score[k] = score[k+1]; // ๋ฐฐ์ด 0๋ฒ์งธ ๊ฐ์ 0+1 ๋ฒ์งธ ๊ฐ์ผ๋ก ๋ฐ๊พธ์ด ์ง์ ๋ค.
}
-- idx; // ๊ฐ์ฅ ๋ง์ง๋ง์ด ๋๋ ์์๊ฐ ์ค๋ณต๋๋ค.
}
}
private static void update(int editIndx, int newValue) {
// ๊ฐ์ ๋ฐ๊พธ๋ ๊ธฐ๋ฅ ์ ์
if(0 <= editIndx && editIndx < idx) {
score[editIndx] = newValue;
} else {
System.out.println("๋ฒ์ ์ค๋ฅ ์
๋๋ค.");
}
}
private static void create(int value) {
// ๋ฐฐ์ด์ ์ ๋ฌ๋ฐ์ ๊ฐ์ ์ถ๊ฐ(์ ์ฅ)ํ ๋, ๋ฐ๋์ ๊ธธ์ด๋ฅผ ํ์ธํด์ผ ํ๋ค.
if( idx < score.length ) {
score[ idx ] = value;
++idx;
} else {
System.out.println("๊ฐ์ ๋ ์ด์ ์ถ๊ฐํ ์ ์์ต๋๋ค.");
}
}
private static void read_list() {
// 0 ~ ๋ง์ง๋ง ์์๊น์ง ๋ชจ๋ ์ถ๋ ฅ
// ๋ฐฐ์ด์ ์ฌ์ฉ๋๋ ๋ณ์๋ค์ ์๋ฏธ๊ฐ ๋ฌด์?
String s = "{";
for (int i = 0; i < idx; ++i) {
s += score[i] + ", ";
}
s += "}";
System.out.println("Score: " + s );
}
}
๊ฒฐ๊ณผ
Score: {100, 50, 1, }
Score: {100, 20, 1, }
Score: {20, 1, }
Score: {20, 1, 20, 40, }
๐๋ฐฐ์ด ์์ฑ ์ ์์๋ค์ ์ด๊ธฐ๊ฐ
โ๏ธํ๋์์ ๋ฐฐ์ด ์ ์ธํ๊ณ , main Method์์ ์ ์ํ ๋๋ main์ด static์ผ๋ก ์ ์ ๋์ด ์๋ค๋ฉด ํ๋์์๋ static์ผ๋ก ์ ์ ํด์ฃผ์ด์ผ ํฉ๋๋ค.
๐Model ์ ์
โ๏ธ๊ฐ Model ๋ณ๋ก CRUD๋ฅผ ๊ตฌํํด์ผ ํฉ๋๋ค.
โ๏ธ์ ์ถ๋ ฅํ๋ ํจ์๋ค์ ๊ตฌํํด์ผ ํฉ๋๋ค.
๊ณผ์ (์ฃผ์ฐจ์ฅ ์์ ํ๋ก๊ทธ๋จ)
์๋ ์์ ์ฝ๋ ๋ถ์
package array_20210222;
import java.util.Scanner;
public class ExArray03 {
public static void main(String[] args) {
int[] cars = new int[20];
// ์์๋ฒํธ : ์ฃผ์ฐจ๋ฉด์ ๋ฒํธ
// ์์์ ๊ฐ : ์ฃผ์ฐจ๋ ์ฐจ๋ ๋ฒํธ
Scanner kb = new Scanner(System.in);
while( true) {
{// ๋ฐฐ์ด ์์๋ค์ ์ถ๋ ฅ : ์ฃผ์ฐจ์ฅ ํํฉํ
for(int i=0; i < cars.length; ++i) {
System.out.println("["+i+"]"+cars[i] );
}
}
System.out.println(">");
String cmd = kb.nextLine();
if( cmd.equals("exit") ){
// ๋ฌธ์์ด์ ๋น๊ตํ๋ค.
break;// ์ข
๋ฃํ๊ฒ ๋ค. "exit"
}
switch( cmd ) {
case "in":
System.out.println("์ฐจ๊ฐ ๋ค์ด์จ๋ค");
{// ์ฃผ์ฐจ ๊ณต๊ฐ์ด ์๋์ง ์ฐพ๋๋ค. : int[] 4์๋ฆฌ ์ด์, 0
// ๊ฒ์ 0 ์ด ์๋์ง ์ฐพ๋๋ค
int search = 0;
boolean has = false;
int result = -1;
for(int i=0; i< cars.length;++i) {
if( cars[i] == search) {
has = true;
result = i;// search ์ ๋ฒํธ
break;// stop for
}
}
// ๊ฒ์ ๊ฒฐ๊ณผ
if( has) {
System.out.println("๋น ๊ณต๊ฐ์ด ์๋ค > ");
int carno = kb.nextInt(); kb.nextLine();
int index = result;// ๊ฐ์ด 0 ์ธ ์์์ ๋ฒํธ
cars[index] = carno;// ๋น ์๋ฆฌ์ ๋ฃ๋๋ค
}else {
System.out.println("0์ด ์๋ค -> ๋น ๊ณต๊ฐ ์๋ค");
}
}
break;
case "out":
System.out.println("์ฐจ๊ฐ ๋๊ฐ๋ค > ");
int nocar = kb.nextInt(); kb.nextLine();
{// ์ฃผ์ฐจ ๊ณต๊ฐ์ด ์๋์ง ์ฐพ๋๋ค. : int[] 4์๋ฆฌ ์ด์, 0
// ๊ฒ์ 0 ์ด ์๋์ง ์ฐพ๋๋ค
int search = nocar;
boolean has = false;
int result = -1;
for(int i=0; i< cars.length;++i) {
if( cars[i] == search) {
has = true;
result = i;
break;// stop for
}
}
// ๊ฒ์ ๊ฒฐ๊ณผ
if( has) {
System.out.println("์ฐจ๊ฐ ์๋ค");
// ๋น์ด๋ค : ์ฃผ์ฐจ๊ณต๊ฐ์ ๋ํ ํํ
cars[result] = 0;
}else {
System.out.println("์ฐจ๊ฐ ์๋ค");
}
}
break;
}// end switch
}// end while
}
}
๐ While๋ฌธ ์ด์ ์ฝ๋ ๋ถ์
public class ExArray03 {
public static void main(String[] args) {
int[] cars = new int[20];
// ์์๋ฒํธ : ์ฃผ์ฐจ๋ฉด์ ๋ฒํธ
// ์์์ ๊ฐ : ์ฃผ์ฐจ๋ ์ฐจ๋ ๋ฒํธ
Scanner kb = new Scanner(System.in);
int[] cars = new int[20]; => intํ ๋ฐฐ์ด์ธ cars์ ๋ฐฐ์ด ๊ธธ์ด๋ฅผ 20์ผ๋ก ํ์ฌ ์์ฑํฉ๋๋ค.
Scanner kb = new Scanner(System.in); => ํค๋ณด๋ ์ ๋ ฅ๊ฐ์ ๋ฐ๊ธฐ ์ํด Scannerํจ์๋ฅผ ์ ์ํ์ฌ ์ธ์๊ฐ์ System.in์ ์ฃผ๊ณ , ๊ทธ ํจ์๋ฅผ kb๋ผ๋ ๋ณ์์ ๋ฃ์ต๋๋ค.
๐ While๋ฌธ์์ switch๋ฌธ ์ด์ ๊น์ง ์ฝ๋ ๋ถ์
while( true) {
{// ๋ฐฐ์ด ์์๋ค์ ์ถ๋ ฅ : ์ฃผ์ฐจ์ฅ ํํฉํ
for(int i=0; i < cars.length; ++i) {
System.out.println("["+i+"]"+cars[i] );
}
}
System.out.println(">");
String cmd = kb.nextLine();
if( cmd.equals("exit") ){
// ๋ฌธ์์ด์ ๋น๊ตํ๋ค.
break;// ์ข
๋ฃํ๊ฒ ๋ค. "exit"
}
while ( true ) { => while๋ฌธ์ ์์ ๋ถ๋ถ์ด๋ฉฐ, ์ธ์๊ฐ์ผ๋ก true๋ฅผ ์ฃผ์๊ธฐ ๋๋ฌธ์ ์ง์์ ์ผ๋ก ๋ฐ๋ณตํ๊ฒ ๋ค๋ ์๋ฏธ ์ ๋๋ค.
for( int i = 0; i < cars.length; ++i { => for๋ฌธ์ ์์ ๋ถ๋ถ์ด๋ฉฐ, i๋ผ๋ ๋ณ์๋ฅผ 0์ผ๋ก ์ด๊ธฐํ ํ์ฌ ์ ์ธํ ๋ค cars ๋ฐฐ์ด ๊ธธ์ด ๋ฏธ๋ง์ผ ๋ ๊น์ง ๋ฐ๋ณตํ๊ณ , i๋ฅผ 1์ฉ ์ฆ๊ฐ ์ํต๋๋ค.
System.out.println("[" + i + "]" + cars[i]); => ๋ผ์ธ ๋จ์๋ก ์ถ๋ ฅ์ ํ๋๋ฐ, ๊ทธ ์ธ์๊ฐ์ผ๋ก ๋๊ดํธ ์ฌ์ด์ i๊ฐ ์ฆ, ์์๋ฒํธ๋ฅผ ์ถ๋ ฅํ๊ณ , cars๋ฐฐ์ด์ Index๋ฒํธ๋ฅผ ์ถ๋ ฅํ๋ค๋ ์๋ฏธ ์ ๋๋ค. i๋ cars ๋ฐฐ์ด์ ๊ธธ์ด๋งํผ 1์ฉ ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ i๋ฅผ ์ธ์๋ก ์ฃผ์์ต๋๋ค.
System.out.println(">"); => ์ฌ์ฉ์์๊ฒ ์ ๋ ฅ๊ฐ์ ๋ฐ๊ธฐ ์ํ ํ์๋ฅผ ์ถ๋ ฅํ๊ณ ์์ต๋๋ค.
String cmd = kb.nextLine(); => ์ฌ์ฉ์์ ์ ๋ ฅ๊ฐ์ ๋ฐ์ ์ ์ฅํ๊ณ ์๋ kb๋ณ์๋ฅผ nextLine();ํจ์๋ฅผ ์ด์ฉํ์ฌ ๋ฌธ์์ด์ ๋ฐ์ ๊ทธ ๊ฐ์ ๋ฌธ์์ด ๋ณ์ cmd์ ์ ์ฅํฉ๋๋ค.
if ( cmd.equals("exit") ) { => ์ฌ์ฉ์์ ์ ๋ ฅ๊ฐ ๋ฌธ์์ด์ ๋ด๊ณ ์๋ cmd๋ณ์ ์์ ๊ฐ์ด ๋ฌธ์์ด exit์ ๊ฐ๋ค๋ฉด if๋ฌธ์ ์ง์ ํ๊ฒ ๋ฉ๋๋ค.
break; => "exit" ๊ฐ์ด ์ ๋ ฅ๋์๋ค๋ฉด while๋ฌธ์ ์ข ๋ฃํ๊ฒ ๋ค๋ ์๋ฏธ ์ ๋๋ค.
๐ Switch ๋ฌธ์ Case "in"์ ๋ํ ๋ถ์
case "in":
System.out.println("์ฐจ๊ฐ ๋ค์ด์จ๋ค");
{// ์ฃผ์ฐจ ๊ณต๊ฐ์ด ์๋์ง ์ฐพ๋๋ค. : int[] 4์๋ฆฌ ์ด์, 0
// ๊ฒ์ 0 ์ด ์๋์ง ์ฐพ๋๋ค
int search = 0;
boolean has = false;
int result = -1;
for(int i=0; i< cars.length;++i) {
if( cars[i] == search) {
has = true;
result = i;// search ์ ๋ฒํธ
break;// stop for
}
}
// ๊ฒ์ ๊ฒฐ๊ณผ
if( has) {
System.out.println("๋น ๊ณต๊ฐ์ด ์๋ค > ");
int carno = kb.nextInt(); kb.nextLine();
int index = result;// ๊ฐ์ด 0 ์ธ ์์์ ๋ฒํธ
cars[index] = carno;// ๋น ์๋ฆฌ์ ๋ฃ๋๋ค
}else {
System.out.println("0์ด ์๋ค -> ๋น ๊ณต๊ฐ ์๋ค");
}
}
break;
case "in" : => ์ฌ์ฉ์์ ์ ๋ ฅ๊ฐ์ด in์ด๋ผ๋ ๋ฌธ์์ด์ด๋ผ๋ฉด ์ด ๊ณณ์ผ๋ก ๋ค์ด ๊ฐ๋๋ค.
System.out.println("์ฐจ๊ฐ ๋ค์ด์จ๋ค"); => ์ฐจ๊ฐ ๋ค์ด์จ๋ค๋ ๋ฌธ์ฅ์ ์ถ๋ ฅํฉ๋๋ค.
int search = 0; => ์ฐจ๊ฐ ์๋์ง ์๋์ง ๊ฒ์ํ๊ธฐ ์ํด ์ฌ์ฉํ search ๋ณ์๋ฅผ ์ ์ํ์ผ๋ก 0๊ฐ์ผ๋ก ์ด๊ธฐํ ํ์ฌ ์ ์ธํฉ๋๋ค. ์ ์ํ์ผ๋ก ์ ์ธํ๋ ์ด์ ๋ cars๋ผ๋ ๋ฐฐ์ด์ด ์ ์ํ์ด๊ธฐ ๋๋ฌธ ์ ๋๋ค. search๊ฐ์ด 0์ด๋ผ๋ฉด ์ฐจ๊ฐ ์๋ค๊ณ ํํ ๋ฉ๋๋ค.
boolean has = false; => boolean Type์ has ๋ณ์๋ฅผ false๋ก ์ด๊ธฐํ ํ์ฌ ์ฐจ๊ฐ ์๋ค์ ์๋ค๋ฅผ ํ๋ณํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค.
int result = -1; => ๋ฐ์์ ์ฐจ๋ ๋ฒํธ๋ฅผ ์ ์ฅํ index๋ฅผ ์ฐ๊ฒฐํด ์ฃผ๊ธฐ ์ํด result ๋ณ์๋ฅผ -1๋ก ์ด๊ธฐํ ํ์ฌ ์ ์ธ ํฉ๋๋ค.
for(int i = 0; i < cars.length; ++i { => for๋ฌธ์ ์์ํ์ฌ ์ฐจ๊ฐ ์ฃผ์ฐจ์ฅ์ ์๋์ง ๊ฒ์ํฉ๋๋ค.
if( cars[i] == search) { => cars์ i๋ฒ์งธ index๋ฒํธ์ serarch๊ฐ ๊ฐ๋ค๋ฉด ์ฆ, search์ ๊ฐ์ด 0์ธ๋ฐ, cars ๋ฐฐ์ด์ i๋ฒ์งธ index ๋ฒํธ๊ฐ ๊ฐ๋ค๋ฉด if๋ฌธ์ ๋ค์ด๊ฐ๋๋ค.
has = true; => has ๋ณ์๋ฅผ true๋ก ๋ณ๊ฒฝํด ์ฃผ์ด ์ฐจ๊ฐ ์๋ค๋ผ๋ ์๋ฏธ๋ฅผ ์ค๋๋ค. ์ด case๋ฌธ์ด "in"์ด๋ผ๋ ์ ๋ ฅ๊ฐ์ ๋ฐ์์ ๋ ๋ค์ด์ค๋ ๊ฒ์ด๊ณ , ๊ทธ๋ ๋ค๋ฉด ์ฐจ๊ฐ ๋ค์ด์จ ๊ฒ ์ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ has๋ฅผ true๋ก ๋ฐ๊ฟ ํด๋น ์๋ฆฌ์ ์ฐจ๊ฐ ์๋ค๊ณ ํํ ํด ์ฃผ๋ ๊ฒ ์ ๋๋ค.
result = i; => ์๋ ๊ฒ์ ๊ฒฐ๊ณผ์ ์ฌ์ฉํ if๋ฌธ์์ index์ ์ฐ๊ฒฐ๋ result ๋ณ์์ i๊ฐ์ ๋ฃ์ด์ค์ ํด๋น ์๋ฆฌ์ ์ฐจ๊ฐ ๋ค์ด๊ฐ ๊ฒ์ ํํํ๊ธฐ ์ํด ์ฌ์ฉํฉ๋๋ค.
break; => ํด๋น for๋ฌธ์ ์ข ๋ฃํ๊ณ , ์๋๋ก ๋ด๋ ค ๊ฐ๋๋ค.
if(has) { => ๊ฒ์ ๊ฒฐ๊ณผ๋ก ์ฌ์ฉํ if๋ฌธ์ ์์ํ๋๋ฐ, ์กฐ๊ฑด์ผ๋ก has ๋ณ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฆ, has ๋ณ์๊ฐ ์ฐธ ์ด๋ผ๋ฉด (์์ has ๋ณ์์ true๊ฐ์ ์คฌ๊ธฐ ๋๋ฌธ์ ์ฐธ ์ ๋๋ค.) if๋ฌธ์ ์คํํด๋ผ ์ ๋๋ค.
System.out.println("๋น ๊ณต๊ฐ์ด ์๋ค > "); => has ๋ณ์๊ฐ ์ฐธ์ด๋ผ๋ ๊ฒ์ ์ฃผ์ฐจ์ฅ ๊ณต๊ฐ์ด ๋น์ด์๋ค๋ ๊ฒ์ ํํํ๊ณ ์์ต๋๋ค. ๋๋ฌธ์ ์ฌ์ฉ์์๊ฒ ๋น ๊ณต๊ฐ์ด ์๋ค๊ณ ์๋ ค์ฃผ๊ธฐ ์ํด ์ถ๋ ฅ์ ๋จผ์ ํฉ๋๋ค.
int carno = kb.nextInt(); kb.nextLine(); => ์ ์ํ ๋ณ์ carno์ ์ฐจ๋๋ฒํธ๋ฅผ ์ ๋ ฅ๋ฐ๊ธฐ ์ํ ๋ณ์ ์ ๋๋ค. ๋น ๊ณต๊ฐ์ด ์๋ค๋ผ๊ณ ์ถ๋ ฅ์ด ๋ ๋ค ์ฐจ๋์ด ์ฃผ์ฐจ๋๋ฉด ํด๋น ์๋ฆฌ์ ์ฐจ๋๋ฒํธ๋ฅผ ์ ๋ ฅ ํด ์ฃผ์ด ์ฐจ๊ฐ ์๋ค๋ ๊ฒ์ ํํํ๊ธฐ ์ํจ์ ๋๋ค. carno๋ณ์์ ์ ์์ ๋ฌธ์๋ฅผ ๋ชจ๋๋ฐ์ ๋ฃ๊ธฐ ์ํด nextInt(); ์ nextLine(); ํจ์๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
int index = result; => ์ ์ํ ๋ณ์ index์ index๋ณ์์ ์ฐ๊ฒฐ๋ result๋ณ์์ ๊ฐ์ ๋ฃ์ด ์ค๋๋ค.
else { => if๋ฌธ์ ์กฐ๊ฑด์ด ์ฐธ์ด ์๋๋ผ๋ฉด ์ฆ, has์ ๊ฐ์ด false๋ผ๋ฉด ์๋๋ฅผ ์คํํฉ๋๋ค.
System.out.println("0์ด ์๋ค -> ๋น ๊ณต๊ฐ์ด ์๋ค"); => ์ฐจ๊ฐ ๋ค์ด๊ฐ ๊ณต๊ฐ์ด ์๋ค๋ผ๋ ๊ฒ์ ์ถ๋ ฅ ํฉ๋๋ค.
}
}
break; => break๋ ์๊ธฐ๊ฐ ์ํ ๋ฐ๋ณต๋ฌธ์ ๋๊ฐ๋ค๋ ์๋ฏธ ์ ๋๋ค. switch๋ฌธ์ ๋๊ฐ๊ฒ ๋ค๋ ์๋ฏธ์ด๊ณ , case "in"์ ๊ณ์ฐ์ ๋๋ด๊ฒ ๋ค๋ ์๋ฏธ ์ ๋๋ค.
๐ Switch ๋ฌธ์ Case "out"์ ๋ํ ๋ถ์
case "out":
System.out.println("์ฐจ๊ฐ ๋๊ฐ๋ค > ");
int nocar = kb.nextInt(); kb.nextLine();
{// ์ฃผ์ฐจ ๊ณต๊ฐ์ด ์๋์ง ์ฐพ๋๋ค. : int[] 4์๋ฆฌ ์ด์, 0
// ๊ฒ์ 0 ์ด ์๋์ง ์ฐพ๋๋ค
int search = nocar;
boolean has = false;
int result = -1;
for(int i=0; i< cars.length;++i) {
if( cars[i] == search) {
has = true;
result = i;
break;// stop for
}
}
// ๊ฒ์ ๊ฒฐ๊ณผ
if( has) {
System.out.println("์ฐจ๊ฐ ์๋ค");
// ๋น์ด๋ค : ์ฃผ์ฐจ๊ณต๊ฐ์ ๋ํ ํํ
cars[result] = 0;
}else {
System.out.println("์ฐจ๊ฐ ์๋ค");
}
}
break;
}// end switch
}// end while
}
}
case "out": => ์ฌ์ฉ์ ์ ๋ ฅ๊ฐ์ด out์ด๋ผ๋ฉด ์ด ๊ณณ์ผ๋ก ๋ค์ด์ต๋๋ค. ์ฆ, ์ฐจ๊ฐ ๋๊ฐ๋ค์ ๋ํ ์ฐ์ฐ์ ํ๋ ๊ณณ ์ ๋๋ค.
System.out.println("์ฐจ๊ฐ ๋๊ฐ๋ค > "); => ์ฐจ๊ฐ ๋๊ฐ๋ค๋ผ๊ณ ์ถ๋ ฅ์ ํด ์ค๋๋ค.
์ด์ ์๋๋ถํฐ๋ cars๋ผ๋ ๋ฐฐ์ด์ ์์๊ฐ์ด 0์ธ ๊ฐ ์ฆ, ์ฐจ๊ฐ ๋น์ด์๋ค๋ ํํ์ ์ฐพ๊ธฐ ์ํ ์ฌ์ ์ด ์์๋ฉ๋๋ค.
int nocar = kb.nextInt(); kb.nextLine(); => ๋ฌธ์์ด๊ณผ ์ ์๋ฅผ ์ ๋ ฅ ๋ฐ์ kb๋ณ์์ ๊ฐ์ nocar๋ผ๋ ์ ์ํ ๋ณ์์ ๋ด์ต๋๋ค. nocar๋ณ์๋ ์ฐจ๊ฐ ์๋ค๋ ๊ฒ์ ํํํ๊ธฐ ์ํ ๋ณ์ ์ ๋๋ค.
boolean has = false; => has ๋ณ์๋ฅผ false๋ก ๋ฐ๊ฟ์ค์ผ๋ก์จ, ์ฐจ๊ฐ ์๋ค๋ผ๋ ๊ฒ์ ํํ ํด ์ค๋๋ค.
int result = -1; => ์ฃผ์ฐจ์ฅ์ ํํํ๋ ๋ฐฐ์ด์์ ์์๋ฒํธ๋ก ์ฌ์ฉ๋๊ฒ ํ result๋ณ์๋ฅผ ์ ์ธํ๋ฉฐ, -1๋ก ์ด๊ธฐํ ํฉ๋๋ค. ์ด๊ฒ์ 0์ผ๋ก ์ด๊ธฐํ๋ฅผ ํ๋ ์ด๋ค ๊ฐ์ผ๋ก ์ ์ธํด๋ ์๊ด ์์ต๋๋ค.
for(int i = 0; i < cars.length; ++i) => ์ด์ ์ฐจ๊ฐ ๋๊ฐ๋ ๊ฒ์ ํํํด ์ฃผ๊ธฐ ์ํ ๋ฐ๋ณต๋ฌธ์ ์์ํฉ๋๋ค. ์ฃผ์ฐจ์ฅ ๊ณต๊ฐ์ ํํํ๋ cars๋ผ๋ ๋ฐฐ์ด์ ๊ธธ์ด ๋งํผ ๋ฐ๋ณตํฉ๋๋ค.
if( cars[i] == search) { => for๋ฌธ์์ ์๊ธฐ ๋๋ฌธ์ i์ ์์๋ฒํธ๋ ๊ณ์ ์ฆ๊ฐํฉ๋๋ค. cars๋ผ๋ ๋ฐฐ์ด์ ์์๊ฐ์ด search ์ฆ, ์ฐจ๋ ๋ฒํธ๊ฐ ๋ค์ด์๋ ๋ณ์์ ๋น๊ตํด์ ๊ฐ์ด ์๋ค๋ฉด ์ฐจ๊ฐ ์๋ค๋ผ๋ ์๋ฏธ์ ๋๋ค.
has = true; => ์ฐจ๊ฐ ์๋ค, ์๋ค๋ฅผ ํํํ๋ has ๋ณ์๋ฅผ true๋ก ๋ณ๊ฒฝํ์ฌ ์ฐจ๊ฐ ๋๊ฐ์์ ํ์ํฉ๋๋ค.
result = i; => ์๋ ๋ค์ ์์๋ if๋ฌธ์์ ๋ค์ ์ฐจ๊ฐ ์๋ค๋ฅผ ํํํ ๋, cars๋ณ์์ ์์๋ฒํธ๋ก ์ฌ์ฉ๋ ๊ฐ์ ์ํด result๊ฐ์ ๋ฐ๋ณต์ ๋ฐ๋ผ ์ฆ๊ฐํ๋ i๊ฐ์ ๋ฃ์ด์ค๋๋ค.
break; => ์ฐจ๊ฐ ์๋ค๊ฐ ๋๊ฐ์์ ๋ํ ๊ณ์ฐ์ ์ํ for๋ฌธ์ ๋ฐ๋ณต์ ๋น ์ ธ ๋๊ฐ๋๋ค.
์ด์ ์๋๋ถํฐ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ด๊ธฐ ์ํ์ฌ ์ฌ์ ์ ์์ ํฉ๋๋ค.
if ( has ) { => has ๋ณ์๋ ์ฐจ๊ฐ ์๋ค, ์๋ค๋ฅผ ์๋ฏธํ๋ ๊ฒ์ด๊ณ , true๊ฐ์ผ๋ก ๋ฐ๋์๋ค๋ ๊ฒ์ ์ฐจ๊ฐ ์๋ค๋ผ๋ ์๋ฏธ ์ ๋๋ค. ์ด๊ฒ์ด ์ฐธ์ด๋ผ๋ฉด ์ฐจ๊ฐ ์๋ค๊ฒ ์ง์?
System.out.println("์ฐจ๊ฐ ์๋ค") => ์ฐจ๊ฐ ์๋ค๊ณ ์ถ๋ ฅ ํด์ค๋๋ค.
์ด์ ์ฐจ๊ฐ ๋๊ฐ์ผ๋ ๋ฐฐ์ด์ ์์๊ฐ์ ๋น์ ์ค๋๋ค.
cars[result] = 0; => ๋ฐฐ์ด์ ์์ฐจ์ ์ผ๋ก ์ฝ์ ์ด ๋ฉ๋๋ค. ํ์ง๋ง, ์์๋ก ์์ ์ด๋, ์ถ๊ฐ๋ฅผ ํ ์ ์์ต๋๋ค. ํ์ฌ ์ด๊ฒ์ ์์์ ์์๋ก ์ฐจ๊ฐ ์๋ค๊ฐ ๋๊ฐ ๊ณต๊ฐ์ ๋น์๋ค๋ผ๊ณ ํํ ํด ์ฃผ๊ธฐ ์ํด ์์์ ๋๊ฐ ๊ณต๊ฐ์ ๋ํ์ฌ ์๋ ค์ฃผ์๋ for๋ฌธ์์ i ๊ฐ์ result๊ฐ์ ๋ฃ์ด์ค์ผ๋ก ํ์ฌ cars[result]๋ ํด๋น ๊ณต๊ฐ์ ๊ฐ๋ฅดํค๊ณ ์์ต๋๋ค. ์ด๊ฒ์ 0์ผ๋ก ํด์คฌ๋ค๋ ๊ฒ์ ๋ค์ ๋น์ด์๋ค๊ฐ ๋์๋ค๋ผ๋ ๊ฒ ์ ๋๋ค.
else { => has๊ฐ false๋ผ๋ฉด ์ฐจ๊ฐ ์๋ค๋ผ๋ ์๋ฏธ๊ฒ ์ง์?
System.out.println("์ฐจ๊ฐ ์๋ค") => ์ฐจ๊ฐ ์๋ค๊ณ ์ถ๋ ฅ ํฉ๋๋ค.
break; => ์์ ์ด ์ํ๋ ๋ฐ๋ณต๋ฌธ์ธ switch๋ฌธ์ ๋๊ฐ๊ณ ๊ฒฐ๊ตญ while๋ฌธ์ผ๋ก ๋์๊ฐ๊ฒ ๋ค์!
}
}
์ฃผ๋ํ๋์ ๊ธ์ด ๋ง์์ ๋์ จ๋์? ๊ตฌ๋ ๊ณผ ๊ณต๊ฐ! ๊ทธ๋ฆฌ๊ณ , ๋๊ธ์ ์ฃผ๋ํ๋์๊ฒ ๋ง์ ํ์ด ๋ฉ๋๋ค!
'๊ฐ๋ ์ ๋ฆฌ ์์ ์ค > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ์๋ฐ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(Object-Oriented Programming) - ์์ ์ฝ๋ ํ์ด (0) | 2021.03.01 |
---|---|
[Java] ์๋ฐ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(Object-Oriented Programming) (0) | 2021.02.28 |
[Java] ์๋ฐ ๊ธฐ์ด (0) | 2021.02.23 |
[Java] Memory, Driver๊ฐ๋ , ํด์๊ธฐ์ ๋ฒ์ญ๊ธฐ, SDK, JDK ๊ฐ๋ (0) | 2021.02.22 |
[๋ถ๋ก][JAVA] Random / Scanner ํจ์ (0) | 2021.02.10 |