2023.08.23
Day08 요약
- 배열을 사용할 때 ArrayList<>를 사용하면 길이 상관 없이 사용가능
- 현재 날짜, 시간을 받을 때는 DateTimeFormatter 사용
List<> - ArrayList<>
List<객체명> 변수명 = new ArrayList<객체명>();
배열에서는 길이를 정의해야 하지만, ArrayList에서는 자동으로 index 배정 (0, 1, 2, ...)
// 아래 두 문장은 같은 의미, 다만 배열의 경우 length값이 필요
Student[] list = new Student[10];
ArrayList<Student> list = new ArrayList<Student>();
(변수이름).size()
해당 Array의 길이, 저장되는 만큼 늘어남
(변수이름).add(객체이름)
해당 객체를 변수에 저장
(변수이름).get(index)
해당 index에 저장된 객체를 호출
- class에 정의된 다양한 메소드를 함께 호출 가능
// 객체배열 list의 i번째 객체에 setName 메소드를 호출, 이때 매개변수는 inpunName
list.get(i).setName(inputName);
DateTimeFormatter
날짜, 시간 출력
yyyy : year
MM : month
dd : day
hh : hour
mm : minute
ss : second
import java.time.LocalDateTime; // import 필요
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy년MM월dd일 hh:mm:ss");
date = dtf.format(LocalDateTime.now()); // '.now'로 현재날짜 및 시간 받아옴
Java 기초
단축키
Ctrl + PageUp / Down : 현재 띄워진 편집창 이동
Ctrl + e : 현재 띄워진 편집창 선택 이동
다양한 괄호들
1) ( ) : parentheses
2) { } : braces
3) [ ] : square brackets
4) < > : angle brackets
예제
source code
// Student class (필드, 생성자, 메소드)
package day08;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Student {
// 필드
private String no;
private String name;
private String dept;
private int year;
static int num = 100;
String date;
// 생성자
public Student() {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy년MM월dd일 hh:mm:ss");
date = dtf.format(LocalDateTime.now());
no = "S" + num;
num++;
}
public Student(String no, String name, String dept,int year) {
this.no = no;
this.name = name;
this.dept = dept;
this.year = year;
}
// 메소드
public void setNo(String no) {
this.no = no;
}
public String getNo() {
return no;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setDept(String dept) {
this.dept = dept;
}
public String getDept() {
return dept;
}
public void setYear(int year) {
this.year = year;
}
public int getYear() {
return year;
}
public void setDate() {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy년MM월dd일 hh:mm:ss");
date = dtf.format(LocalDateTime.now());
}
public void print() {
System.out.printf("%s\t%s\t%s\t%d\t%s\n", no, name, dept, year, date);
}
}
// Student main class
package day08;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
// Student[] list = new Student[10]; 와 같은 기능이고 다만 index 지정 필요없음
ArrayList<Student> list = new ArrayList<Student>();
while (true) {
System.out.println("==================라즈베리파이학교==================");
System.out.println("1.학생등록 2.학생리스트 3.학생검색 4.학생수정 5.학생삭제 0.종료");
System.out.print("메뉴선택 > ");
int menu = sc.nextInt();
if (menu == 1) {
Student s = new Student();
System.out.print("이름 > ");
s.setName(sc.next());
System.out.print("학과 > ");
s.setDept(sc.next());
System.out.print("학년 > ");
s.setYear(sc.nextInt());
System.out.println(s.getName()+"님 등록 완료");
// list[i] = s; 와 같은 의미
list.add(s);
} else if (menu == 2) {
System.out.println("학번\t이름\t학과\t학년\t등록(수정)일자");
System.out.println("============================================");
for (int i = 0; i < list.size(); i++) {
// list[i].print()
list.get(i).print();
}
} else if (menu == 3) {
boolean find = false;
System.out.println("검색할 학번 (S100~) > ");
String search = sc.next();
for (int i = 0; i < list.size(); i++) {
if (search.equals(list.get(i).getNo())) {
list.get(i).print();
find = true;
}
} if (!find) {
System.out.println("조회할 수 없는 학번입니다...");
}
} else if (menu == 4) {
boolean find = false;
System.out.print("조회할 학번 > ");
String search = sc.next();
for (int i = 0; i < list.size(); i++) {
if (search.equals(list.get(i).getNo())) {
find = true;
System.out.println(list.get(i).getName()+"님 정보수정");
System.out.println("1.이름수정 2.학과수정 3.학년수정");
System.out.print("메뉴선택 > ");
int newMenu = sc.nextInt();
if (newMenu == 1) {
System.out.print("새로운 이름 > ");
String inputName = sc.next();
list.get(i).setName(inputName);
System.out.println("이름 수정 완료!");
list.get(i).setDate();
} else if (newMenu == 2) {
System.out.print("새로운 학과 > ");
String inputDept = sc.next();
list.get(i).setDept(inputDept);
System.out.println("학과 수정 완료!");
list.get(i).setDate();
} else if (newMenu == 3) {
System.out.print("새로운 학년 > ");
int inputYear = sc.nextInt();
list.get(i).setYear(inputYear);
System.out.println("학년 수정 완료!");
list.get(i).setDate();
}
}
} if (!find) {
System.out.println("조회할 수 없는 학번입니다...");
}
} else if (menu == 5) {
boolean find = false;
// for (int i = 0; i < list.size(); i++) {
// list.get(i).print();
// }
System.out.println("----------학생정보----------");
// list 배열 안의 객체를 전부 출력
list.forEach(a -> a.print());
System.out.print("삭제할 학생의 학번 입력 > ");
String search = sc.next();
for (int i = 0; i < list.size(); i++) {
if (search.equals(list.get(i).getNo())) {
list.remove(i);
find = true;
System.out.println("삭제 완료!\n");
System.out.println("----------학생정보(rev)----------");
list.forEach(a -> a.print());
break;
}
} if (!find) {
System.out.println("조회할 수 없는 학번입니다...");
}
} else if (menu == 0) {
System.out.println("프로그램 종료...");
break;
}
System.out.println();
}
}
}
실행결과
==================라즈베리파이학교==================
1.학생등록 2.학생리스트 3.학생검색 4.학생수정 5.학생삭제 0.종료
메뉴선택 > 1
이름 > 홍길동
학과 > 전자
학년 > 1
홍길동님 등록 완료
==================라즈베리파이학교==================
1.학생등록 2.학생리스트 3.학생검색 4.학생수정 5.학생삭제 0.종료
메뉴선택 > 1
이름 > 이순신
학과 > 전자
학년 > 2
이순신님 등록 완료
==================라즈베리파이학교==================
1.학생등록 2.학생리스트 3.학생검색 4.학생수정 5.학생삭제 0.종료
메뉴선택 > 1
이름 > 아이유
학과 > 간호
학년 > 3
아이유님 등록 완료
==================라즈베리파이학교==================
1.학생등록 2.학생리스트 3.학생검색 4.학생수정 5.학생삭제 0.종료
메뉴선택 > 2
학번 이름 학과 학년 등록(수정)일자
============================================
S100 홍길동 전자 1 2023년08월25일 08:54:45
S101 이순신 전자 2 2023년08월25일 08:54:51
S102 아이유 간호 3 2023년08월25일 08:54:56
==================라즈베리파이학교==================
1.학생등록 2.학생리스트 3.학생검색 4.학생수정 5.학생삭제 0.종료
메뉴선택 > 3
검색할 학번 (S100~) >
S102
S102 아이유 간호 3 2023년08월25일 08:54:56
==================라즈베리파이학교==================
1.학생등록 2.학생리스트 3.학생검색 4.학생수정 5.학생삭제 0.종료
메뉴선택 > 3
검색할 학번 (S100~) >
S103
조회할 수 없는 학번입니다...
==================라즈베리파이학교==================
1.학생등록 2.학생리스트 3.학생검색 4.학생수정 5.학생삭제 0.종료
메뉴선택 > 4
조회할 학번 > S101
이순신님 정보수정
1.이름수정 2.학과수정 3.학년수정
메뉴선택 > 3
새로운 학년 > 4
학년 수정 완료!
==================라즈베리파이학교==================
1.학생등록 2.학생리스트 3.학생검색 4.학생수정 5.학생삭제 0.종료
메뉴선택 > 5
----------학생정보----------
S100 홍길동 전자 1 2023년08월25일 08:54:45
S101 이순신 전자 4 2023년08월25일 08:55:20
S102 아이유 간호 3 2023년08월25일 08:54:56
삭제할 학생의 학번 입력 > S99
조회할 수 없는 학번입니다...
==================라즈베리파이학교==================
1.학생등록 2.학생리스트 3.학생검색 4.학생수정 5.학생삭제 0.종료
메뉴선택 > 5
----------학생정보----------
S100 홍길동 전자 1 2023년08월25일 08:54:45
S101 이순신 전자 4 2023년08월25일 08:55:20
S102 아이유 간호 3 2023년08월25일 08:54:56
삭제할 학생의 학번 입력 > S100
삭제 완료!
----------학생정보(rev)----------
S101 이순신 전자 4 2023년08월25일 08:55:20
S102 아이유 간호 3 2023년08월25일 08:54:56
==================라즈베리파이학교==================
1.학생등록 2.학생리스트 3.학생검색 4.학생수정 5.학생삭제 0.종료
메뉴선택 > 2
학번 이름 학과 학년 등록(수정)일자
============================================
S101 이순신 전자 4 2023년08월25일 08:55:20
S102 아이유 간호 3 2023년08월25일 08:54:56
==================라즈베리파이학교==================
1.학생등록 2.학생리스트 3.학생검색 4.학생수정 5.학생삭제 0.종료
메뉴선택 > 0
프로그램 종료...
'Spring-Java > Java' 카테고리의 다른 글
Day10_class 예제 (0) | 2023.08.28 |
---|---|
Day09_Overloading, 정적변수, for/each (0) | 2023.08.28 |
Day07_접근제한자, class(필드, 생성자, 메소드) (0) | 2023.08.23 |
Day06_배열예제2 (0) | 2023.08.21 |
Day05_배열예제 (2) | 2023.08.20 |