개발자
[JAVA 10일차]array(배열)/회원가입 본문
array(배열)
배열 : 동일한 데이터타입을 가지는 여러개의 데이터를 저장할 수 있는 데이터 타입을 말한다. 배열 또한 객체이다.
1.배열의 선언
1
2
3
4
5
|
int[] subject_arr;
또는
int subject_arr[];
|
cs |
참고 블로그
https://dojang.io/mod/page/view.php?id=293
C 언어 코딩 도장: 36.1 배열을 선언하고 요소에 접근하기
배열은 변수 이름 뒤에 [ ] (대괄호)를 붙인 뒤 크기를 설정합니다. 그리고 배열을 선언하면서 값을 초기화할 때는 { } (중괄호)를 사용합니다. 자료형 배열이름[크기]; 자료형 배열이름[크기] = {
dojang.io
2. 선언되어진 배열을 메모리에 할당
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
// 2. == 선언되어진 배열을 메모리에 할당을 해준다. ==
subject_arr = new int[7];
/*
-----------------------------
| 0 | 1 | 3 | 4 | 5 | 6 | 7 | ----------------------------- 위의 숫자는 배열의 인덱스(index)를 가르키는 번호로써 0부터 시작하여 1씩 증가한다.
배열의 인덱스(index)를 "배열의 방번호" 라고 흔히 부른다.
배열에 저장된 데이터를 표현할때는 아래와 같이 배열명[인덱스번호]로 나타낸다.
subject_arr[0]
subject_arr[1]
subject_arr[2]
subject_arr[3]
subject_arr[4]
subject_arr[5]
subject_arr[6]
subject_arr[7] => 존재하지 않으므로 오류!!
배열로 선언된 변수에는 자동적으로 초기값이 들어간다.
정수는 0, 실수는 0.0 char는 ' ', String 을 포함한 클래스 객체는 null 이 들어간다.
*/
System.out.println("배열 subject_arr 의 길이 =>" + subject_arr.length);
// 배열의 길이(크기)는 배열명.length 이다.
for(int i=0; i<7; i++) {
System.out.println("subject_arr["+ i +"] => " + subject_arr[ i ]); //for(int i=0; i<7; i++); 클론썻더니 오류떳음
}
|
cs |
|
|
3. 배열에 데이터 값 넣어주기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
subject_arr[0] = 100; // 국어
subject_arr[1] = 90; // 영어
subject_arr[2] = 95; // 수학
subject_arr[3] = 70; // 과학
subject_arr[4] = 98; // 사회
subject_arr[5] = 100; // 음악
subject_arr[6] = 89; // 체육
//국어
//영어
//수학
//과학
//사회
//음악
//체육
/*
-----------------------------
| 0 | 1 | 2 | 3 | 4 | 5 | 6 |
------------------------------
100 90 95 70 98 100 90
국어 영어 수학 과학 사회 음악 체
*/
System.out.println("\n~~~~~~~~~~~~~~~~~~~~~\n");
for(int i=0; i<subject_arr.length; i++) {
System.out.println("subject_arr["+ i +"] => " + subject_arr[ i ]);
}
System.out.println("\n~~~~~~~~~~~~~~~~~~~~~~\n");
int sum = 0;
for(int i=0; i<subject_arr.length; i++) {
sum += subject_arr[i];
}
System.out.println("총점 : " + sum);
//총점 : 642
double avg = Math.round((double)sum/subject_arr.length*10 )/10.0; // 정수 나누기 정수는 몫이 나오니까 double로 바꿔주기
// 반올림 round 가 정수로나오니까 *10 /10 해주기
System.out.println("평균 : " + avg);
//평균 : 91.7
|
cs |
4. 배열의 선언과 데이터값 주는 것을 한번에
1
2
3
4
5
6
7
|
1. == 배열의 선언== 과
2. == 선언되어진 배열을 메모리에 할당을 해준다. == 을
각각 따로 하지 않고 아래와 같이 동시에 할 수 있다.
new int[] 은 생략 가능하다.!! int[] subject_arr_3 = new int[] {100,90,95,70,98,100,90};
|
cs |
확장된 for문(==개선된 for문==for each문)
for(데이터형 접근변수명 : 배열이나 컬렉션 변수명) {
반복코드
}
1
2
3
4
|
for(int jumsu : subject_arr_5) { // subject_arr_5 배열의 길이 7 만큼 반복한다.
System.out.println(jumsu);
}
|
cs |
1.subjext_arr5의 배열수 만큼 반복하여 배열의 값을 jumsu에 담아준다.
2.배열의 수만큼 반복문도 반복해준다. (여기서는 jumsu를 출력해주는 반복문을 반복한다)
참고 블로그 :
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=fbisk&logNo=140051214425
확장 FOR문 for( String ref : arrRef)
확장 for문 확장 for문은 자바 5부터 나온 for문이다. 확장for문은 배열을 for문으로 돌릴때 참으로 편하다...
blog.naver.com
메소드 파라미터 가변인수 이용하기
public void test(string... parameter)
{ contents }
가변인자로 말 그대로 여러 개의 매개변수를 받을 수 있다는 말이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
// 메소드 파라미터 가변인수 사용하기
int habgae(int ... point) {
int sum = 0;
for(int i=0; i<point.length; i++) {
sum += point[i];
}//end of for---------
return sum;
}
public static void main(String[] args) {
System.out.println("\n############################\n");
System.out.println("\n ==== 메소드 파라미터 가변인수 사용하기 =====\n");
Main_array_01 ma = new Main_array_01();
System.out.println("총점(100,90,95,70,98,100,90) : " + ma.habgae(100,90,95,70,98,100,90));
// 총점(90,96,70
System.out.println("총점(90,95,70,98,90) : " + ma.habgae(90,95,70,98,100));
// 총점
}// end of main()------------------
|
cs |
참고 블로그 :
https://jekal82.tistory.com/47
[JAVA] 자바 ... 파라미터 = 가변인자 ( varargs )
java에서 파라미터를 전달하다 보면 아래와 같은 코드를 보신 적이 있으실 겁니다. public void test(string... parameter) { contents } 저것은 가변인자로 말 그대로 여러 개의 매개변수를 받을 수 있다는 말
jekal82.tistory.com
객체 배열
객체배열 : 클래스를 배열로 선언하는것
객체 배열을 사용하는 이유
객체는 메모리에서 single record 만 표현할 수 있다. 만약 multiple record를 표현시 객체배열을 사용한다.
다양한 타입(String,Integer, any class instance)의 데이터를 객체 배열을 통해 저장할 수 있다.
기본 데이터 타입의 배열 VS 객체 배열
기본 데이터 타입의 배열 : 배열 선언과 동시에 메모리 생성
객체 배열 : 객체 변수의 이름들만 생성, 실제 객체 내부의 메모리는 생성X
ex. Car[] car = new Car[8]; => 참조변수 8개 생성되지만 실제 8개의 참조변수에 대한 객체 자체의 메모리 생성 X
∴ 객체의 메모리를 따로 생성하는 과정이 별도로 필요함!
1
2
3
4
5
|
Member[] mbr_arr = new Member [10];
for(int i=0; i<mbr_arr.length; i++) {
System.out.println(mbr_arr[i]);
}
|
cs |
>> 각배열에는 아직 null값만 존재한다
<Member class>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
public class Member {
//filed
String id;
String passwd;
String name;
static int count; // Member 클래스 객체(인스턴스)를 생성한 개수를 알려주고자 하는 용도. 모든 클래스에서 다같이 써야해서
//method
String showInfo() {
return "1.아이디 : "+id+"\n"
+"2.비밀번호 : " + passwd + "\n"
+"3.성명 : " +name + "\n";
}
}
|
cs |
<Main>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
Member[] mbr_arr = new Member [10];
for(int i=0; i<mbr_arr.length; i++) {
System.out.println(mbr_arr[i]);
}
System.out.println("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
Member mbr1 = new Member();
mbr1.id = "leess";
mbr1.passwd = "qwer1234";
mbr1.name = "이순신";
mbr_arr[0] = mbr1;
Member.count++; // 1
Member mbr2 = new Member();
mbr2.id = "eomjh";
mbr2.passwd = "abcd0070";
mbr2.name = "엄정화";
mbr_arr[1] = mbr2;
Member.count++; //2
Member mbr3 = new Member();
mbr3.id = "chaew";
mbr3.passwd = "qwer0070";
mbr3.name = "차은우";
mbr_arr[2] = mbr3;
Member.count++; //3
Member mbr4 = new Member();
mbr4.id = "chaew";
mbr4.passwd = "qwer0070";
mbr4.name = "진혜린";
Member.count++; //4
mbr_arr[3] = mbr4;
Member mbr5 = new Member();
mbr5.id = "chaew";
mbr5.passwd = "qwer0070";
mbr5.name = "장진영";
Member.count++; //5 /만약 클래스에서 스테틱안쓰고 inr count 하면 mbr5.count++; 이값은 1 이되서 안된다.
mbr_arr[4] = mbr5;
// 모든 회원들에 대해서 회원정보를 출력하세요~~
for(int i=0; i<Member.count; i++) {
System.out.println(mbr_arr[i].showInfo());
}//enf of for--------------
|
cs |
객체 배열 참고블로그(꼭 보기!!!!)
객체 배열이란(클래스를 배열로 선언하기)
객체 배열이란? 클래스를 배열로 선언하는 방식 객체 배열을 사용하는 이유 객체는 메모리에서 single record 만 표현할 수 있다. 만약 multiple record를 표현시 객체배열을 사용한다. 다양한 타입(String
peonyf.tistory.com
https://www.delftstack.com/ko/howto/java/java-array-of-objects/
Java에서 객체 배열 생성
이 기사에서는 Java에서 객체 배열을 만드는 방법을 소개합니다.
www.delftstack.com
https://velog.io/@alicesykim95/Java-Class-Array-%ED%81%B4%EB%9E%98%EC%8A%A4-%EB%B0%B0%EC%97%B4
Java Class Array 클래스 배열
📌 1. 클래스 배열 생성 >클래스명[] 객체명 = new 클래스명[배열의 크기]; 📌 2. 생성자(Constructor) 📎 생성자란? > 코드를 짤 때 변수를 선언하면 반드시 초기화를 해주어야 한다. 초기화를 해주지
velog.io
static 변수 참고블로그
07-03 정적(static) 변수와 메소드
이번에는 스태틱(static)에 대해서 알아보자. [TOC] ## static 변수 예를 들어 다음과 같은 HouseLee 클래스가 있다고 하자. *Sample. ...
wikidocs.net
회원가입 만들기
<membe>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
//filed
String id;
String passwd;
String name;
static int count; // Member 클래스 객체(인스턴스)를 생성한 개수를 알려주고자 하는 용도. 모든 클래스에서 다같이 써야해서
//method
String showInfo() {
return "1.아이디 : "+id+"\n"
+"2.비밀번호 : " + passwd + "\n"
+"3.성명 : " +name + "\n";
}
|
cs |
<main>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
/*
========== >> 메뉴 << ==========
1.회원가입 2.모든회원조회 3.프로그램종료
==============================
▷ 메뉴번호 선택 =>
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Member[] mbr_arr = new Member[3]; // 개수안쓰면 오류
String str_menuno = "";
do {
System.out.println("========== >> 메뉴 << ==========\n"
+"1.회원가입 2.모든회원조회 3.프로그램종료\n"
+"===============================");
System.out.println("▷ 메뉴번호 선택 => ");
str_menuno = sc.nextLine();
switch (str_menuno) {
case "1": //회원가입
if(Member.count < mbr_arr.length) {
// 가입된 회원수가 정원(배열의 길이)보다 적은 경우
Member mbr = new Member();
do {
System.out.print("▶아이디 : ");
String input_id = sc.nextLine();
boolean isIdExists = false;
for(int i=0; i<Member.count; i++) {
if( mbr_arr[i].id.equals(input_id)) { //똑같은 아이디 있으면 for문 빠져나온다
isIdExists = true; //흔적 남기고 빠져나오기
break;
}
}// end of for-------------------------
if(isIdExists) {
System.out.println("[경고] 이미 사용중인 아이디 입니다. \n");
}
else {
System.out.println(">> 사용가능한 아이디 입니다.\n");
mbr.id = input_id;
break;
}
} while(true);
do {
System.out.print("▶비밀번호 : ");
//비밀번호는 8글자 이상 15글자 이하의 대,소문자,특수기호가 혼합이 되어져야만 합니다.
String input_passwd = sc.nextLine();
if(MyUtil.checkPwd(input_passwd)) { //if(MyUtil.checkPwd(input_passwd)); 세미콜론때문에 오류났었음
mbr.passwd = input_passwd;
break;
}
else {
System.out.println("[경고] 비밀번호는 8글자 이상 15글자 이하의 대,소문자,특수기호가 혼합이 되어져야만 합니다.\n");
}
} while(true);
System.out.print("▶성명 : ");
mbr.name = sc.nextLine();
// Member.count++; // static 변수
mbr_arr[Member.count++] = mbr;
// mbr_arr[0] = mbr;
// Member.count = 1;
// mbr_arr[1] = mbr;
// Member.count = 2;
// mbr_arr[2] = mbr;
// Member.count = 3;
System.out.println("\n회원가입 성공~~\n");
} // end of if(first)
else {
// 가입된 회원수가 정원(배열의 길이)보다 적은 경우
System.out.println("[경고] 정원마감이라서 더 이상 회원가입이 불가합니다.\n");
}
break;
case "2": //모든회원조회
/*
for(int i=0; i<Member.count; i++) {
System.out.println(mbr_arr[i].showInfo()); //mbr_arr[i]은 인스턴스 , 맴버클래스의 객체
}
*/
/*
-----------------------
아이디 비밀번호 성명
-----------------------
leess qWer1234$ 이순신
eomhj qWer1234$ 엄정화
chaew qWer1234$ 차은우
*/
System.out.println("------------------------\n"
+"아이디 비밀번호 성명\n"
+"------------------------");
String result = "";
for(int i=0; i<Member.count; i++) {
result += mbr_arr[i].id+"\t"+mbr_arr[i].passwd+"\t"+mbr_arr[i].name+"\n";
}// end of for----------------
System.out.println(result);
break;
case "3": // 프로그램종료
break;
default: //메뉴에 없는것을 선택한 경우(예 : 강아지 또는 7)
System.out.println("[경고] 메뉴에 있는 번호만 선택하세요!!\\n");
break;
}// end of switch---------------------
} while (!("3".equals(str_menuno)));
sc.close();
System.out.println(">> 프로그램 종료 <<");
|
cs |
'개발자 > JAVA' 카테고리의 다른 글
[JAVA 12일차] 버블정렬/배열 오름,내림차순/Arrays.sort()/로또(lotto)/2차원배열 (0) | 2022.08.24 |
---|---|
[JAVA 11일차]회원가입 메소드화/공백 제거/toCharArray/특정문자열제거해서 뽑아내기/세자리 마다 ,(콤마) 찍어주기 (0) | 2022.08.18 |
[JAVA 10일차] random(랜덤정수,랜덤알파벳,인증키,랜덤홀짝맞추기, 가위바위보,정수 맞히기 게임) (0) | 2022.08.17 |
[JAVA 9일차] 다중 for문/continue/구구단/레이블사용하여break/equalsIgnoreCase/별찍기/while문/do while문 (0) | 2022.08.16 |
[JAVA 8일차] sum/대,소문자,특수문자 개수 알아오기/계좌번호 유효성검사 (0) | 2022.08.16 |