Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- SQL
- 변수의 초기화
- 연산자우선순위
- 팩토리얼재귀
- 자바연산자
- 자바수우미양가
- 프로그래머스
- 자바실행방법
- 오버로딩
- read()함수
- 자바if문
- 자바형식
- 누승재귀
- 자바함수
- 중첩for문
- 자바클래스
- 변수명명규칙
- 오라클
- 자바상수
- 자바자료형
- 자바기타제어자
- 자바별찍기
- 자바접근지정자
- 효율적인연산
- 겟셋함수
- 클래스배열
- 기타제어자
- 자바switch문
- 반복문라벨
- 자바제어문
Archives
- Today
- Total
h-i-s-t-o-r-y
[Java] 입력, 수정, 삽입, 삭제, 출력, 검색, 종료 프로그램 본문
package days13;
import java.io.IOException;
import java.util.Scanner;
public class Ex01 {
// 모든 메서드(함수) 사용할 수 있는 전역변수
static int [] m = new int[3];
static String [] menus = {
"입력(add)",
"수정(update)",
"삽입(insert)",
"삭제(delete)",
"출력(disp)",
"검색(search)",
"종료(exit)"
};
static int num; //메뉴 선택 후 저장할 변수
static char con = 'Y';
static Scanner scanner = new Scanner(System.in);
static int idx = 3; //채워넣고자 하는 배열의 위치값을 가지는 변수
public static void main(String[] args) throws IOException {
// Ctrl 누르고 함수 클릭하면 해당 함수 선언 부분으로 이동
while (true) {
dispMenu();
selectMenu();
processMenu();
}
}//main
private static void processMenu() throws IOException {
switch (num) {
case Menu.ADD: //add
add();
break;
case 2: //update
update();
break;
case 3: //insert
insert();
break;
case 4: //delete
delete();
break;
case Menu.DISP: //disp
disp();
break;
case 6: //search
search();
break;
case Menu.EXIT: //exit
exit();
break;
}//switch
}
private static void search() throws IOException {
// 순차 검색 (sequence search)
System.out.print("> 검색할 위치 입력 ? ");
int searchNum = scanner.nextInt();
for (int i = 0; i < idx; i++) {
if (searchNum == m[i]) {
System.out.printf("%d 위치에 있다.\n", i);
}
}
pause();
}
private static void update() throws IOException {
System.out.print("> 수정할 위치 입력 ? ");
int updateIndex = scanner.nextInt();
int updateNum = scanner.nextInt();
m[updateIndex] = updateNum;
pause();
}
private static void delete() {
//배열은 기억공간 삭제가 안되기 때문에 삭제하려는 변수 뒤에 있는 값들을 모두 앞으로 옮기고 맨뒤의 값을 초기화(0)
//**즉 삭제할 인덱스 입력받아 -> 그다음 인덱스 위치부터 앞으로 한칸씩이동
//-> 마지막 요소는 0으로 초기화 -> idx 1 감소
System.out.print("> 삭제할 위치 입력 ? ");
int deleteIndex = scanner.nextInt();
arrayLeftShift(deleteIndex);
m[idx-1] = 0;
idx--;
}
private static void arrayLeftShift(int deleteIndex) {
for (int i = deleteIndex + 1; i < idx; i++) {
m[i-1] = m[i];
}
}
private static void insert() throws IOException {
System.out.print("> 위치, 정수 입력 ? ");
int insertIndex = scanner.nextInt();
int insertNum = scanner.nextInt();
arraySizeCheck(); //1
// 삽입하기 위해 오른쪽으로 밀겠다
arrayRightShift(insertIndex); //2
m[insertIndex] = insertNum; //3
idx++; //4
pause(); //일시정지
}
private static void arrayRightShift(int insertIndex) {
for (int i = idx-1; i >= insertIndex; i--) {
m[i+1] = m[i];
}
}
private static void disp() throws IOException {
clearScreen();
System.out.printf("[배열 출력]\n");
for (int i = 0; i < idx; i++) {
System.out.printf("m[%d]=%d\t", i, m[i]);
if (i%2==1) System.out.println();
}
pause(); //일시정지
}
private static void pause() throws IOException {
System.out.print("\n> 계속 하려면 엔터 치세요.");
System.in.read();
System.in.skip(System.in.available());
}
private static void add() throws IOException {
clearScreen();
do {
System.out.printf("> %d 인덱스에 채울 정수 입력 ? ", idx);
int n = scanner.nextInt();
// 배열크기 체크 -> 방이 부족하면 배열크기 증가
arraySizeCheck();
m[idx++] = n;
System.out.print("> 계속 입력 ? ");
con = (char) System.in.read();
System.in.skip(System.in.available());
} while (Character.toUpperCase(con)=='Y');
}
private static void arraySizeCheck() {
if (idx == m.length) {
arraySizeIncrease(3);
}
}
private static void arraySizeIncrease(int n) {
int [] temp = new int[m.length + n];
System.arraycopy(m, 0, temp, 0, m.length);
m = temp;
}
private static void exit() {
clearScreen(); //화면 깨끗이
System.out.println("\n\n 프로그램 종료 !!! ");
System.exit(-1);
}
private static void clearScreen() {
for (int i = 0; i < 10; i++) {
System.out.println();
}
}
private static void selectMenu() {
System.out.print("> 메뉴 선택하세요 ? ");
num = scanner.nextInt();
}
private static void dispMenu() {
clearScreen();
System.out.printf("[%s]\n", "메뉴선택");
for (int i = 0; i < menus.length; i++) {
System.out.printf("%d. %s\n", i+1, menus[i]);
}
}
}//class
// enum 열거형
class Menu{
static final int ADD = 1;
static final int DISP = 5;
static final int EXIT = 7;
}
'Java' 카테고리의 다른 글
[Java] 자바 ego(자아) (0) | 2021.07.16 |
---|---|
[Java] ArrayList 클래스 (0) | 2021.07.16 |
[Java] 주민등록번호 입력받아 남녀, 내외국인, 출생지, 검증하기 (0) | 2021.07.16 |
[Java] 카드번호 랜덤 위치 마스킹 (0) | 2021.07.16 |
[Java] 랜덤 로또 번호 발생기 (0) | 2021.07.16 |
Comments