통합개발환경 (IDE, Integrated Development Environment)
코드 편집기 + 컴파일러(빌더) + 디버거(Debugger)
디버거 : 프로그램 버그를 잡기 위한 도구, 디버깅을 위한 도구
버그 - 논리적인 오류(1+1이 2가 나오지 않는 현상)
디버깅 - 코드를 한줄 씩 실행하여 그 때 그 때의 결과를 확인하면서 로직의 오류를 찾고 수정하는 과정
코드 편집기 + 컴파일러(빌더) + 디버거(Debugger)
디버거 : 프로그램 버그를 잡기 위한 도구, 디버깅을 위한 도구
버그 - 논리적인 오류(1+1이 2가 나오지 않는 현상)
디버깅 - 코드를 한줄 씩 실행하여 그 때 그 때의 결과를 확인하면서 로직의 오류를 찾고 수정하는 과정
모든 프로그래밍 언어는 디버깅이 필요하다.
브레이크 포인트 : 일시정지, 바이트코드로 실행
코드를 처리하고 있는 내용적인 모습을 볼 수 있다. 파란색은 실행되지 않은 부분을 나타낸다.
스킵 F8, 진입 F7 : 메서드 내용확인, 메서드 벗어나기(점프) shitf + F8, 커서에서 멈추기
기본데이터 타입은 값을 볼 수 있다, 인스턴스의 경우 주소의 모습과 안에 들어간 값을 확인할 수 있다.
인터럽트 : 코드가 강제로 중단된 상태, 입력받을 값이 있을 경우
값이 제대로 들어가는지 디버깅을 계속적으로 활용해야 한다.
단축키
ctrl + 메소드 : 해당 메소드로 이동
Navigate - back : 이동하기 전으로 돌아가기
프로그램에 임시로 저장할 때에는 데이터가 다 사라진다.
매번 실행할 때마다 데이터가 없기 때문에 데이터의 값을 보존하기 위해서는 DB와 연동해야 한다.
데이터 삭제
검색 -> 검색 결과가 있을 경우 -> 결과 출력 -> 삭제의사 확인
검색 결과가 없을 경우 - 메시지 출력 - 종료
삭제 확정 -> yes 삭제 - 삭제 후 종료
no 삭제 취소 - 종료
데이터수정
데이터 삭제와 유사한 과정을 거침
수정 의사 (삭제 의사)확인까지는 동일함
수정 확정 -> yes -> 변경할 데이터 입력 -> 해당 데이터 변경(set) -> 수정완료
정수를 제외한 나머지를 수정대상으로 하여 수정 기능을 구현
package controller;
import dto.DataDto;
import java.util.ArrayList;
import java.util.Scanner;
public class DataController {
// 제공기능 : 입력, 출력, 검색, 삭제
Scanner scan = new Scanner(System.in);
// 공용부품(입력장치) - 모든 메소드에서 사용가능
// 데이터 저장 공간 ArrayList
ArrayList<DataDto> datas = new ArrayList<>();
public void run(){
String menu = null; //초기화
System.out.println("데이터 관리 프로그램");
System.out.println("=================");
while (true){
System.out.println("1. 데이터 입력");
System.out.println("2. 데이터 출력");
System.out.println("3. 데이터 검색");
System.out.println("4. 데이터 삭제");
System.out.println("5. 데이터 수정");
System.out.println("0. 종료");
System.out.print("입력> ");
menu = scan.nextLine();
// 종료처리
if (menu.equals("0")){
System.out.println("프로그램 종료");
break;
} // if end
switch (menu){
case "1" :
inputData();
break;
case "2" :
outputData();
break;
case "3" :
searchData();
break;
case "4" :
deleteData();
break;
case"5" :
break;
default:
System.out.println("0~4번 중 하나를 입력하세요.");
}
} // while end
}// run method end
private void deleteData() {
System.out.println("4. 데이터 삭제");
System.out.println("-------------");
// 데이터 유무 확인
if(datas.size() == 0){
// 여기서 출력 메소드 종료
System.out.println("데이터가 없습니다. 이전 문구로 돌아갑니다.");
return; // 메소드 종료
} // if end
// 삭제 = 검색 + 삭제
// 삭제의 기준이 되는 값 받기
System.out.print("삭제할 정수 : ");
String search = scan.nextLine();
int snum = Integer.parseInt(search);
DataDto temp = null; // d는 for문 안에서만 사용 가능, d를 저장할 수 있는 임시변수
for(DataDto d : datas){
if(snum == d.getNumber()){
// 삭제할 값과 같으면 출력, 찾고자 하는 데이터
System.out.println("검색 결과>");
System.out.println("정수 : " + d.getNumber() + ",");
System.out.println("문자열 : " + d.getStr() + ",");
System.out.println("실수 : " + d.getFnumber());
System.out.println("---------------------------- ");
temp = d; // 임시공간에 검색한 데이터를 저장
break; // 검색 작업만 종료
} // if end
} // for end
// 검색할 결과가 있을 경우
if(temp != null){
System.out.print("삭제하시겠습니까?(y/n) ");
search = scan.nextLine();
if(search.equals("y")){
datas.remove(temp);
System.out.println("삭제 되었습니다.");
} else {
System.out.println("취소합니다.");
return; // 메소드 종료
}
}
// 검색 결과가 없을 경우
else {
System.out.println("삭제할 데이터가 없습니다.");
}
} // deleteData end
private void searchData() {
System.out.println("3. 데이터 검색");
System.out.println("-------------");
// 데이터 유무 확인
if(datas.size() == 0){
// 여기서 출력 메소드 종료
System.out.println("데이터가 없습니다. 이전 문구로 돌아갑니다.");
return; // 메소드 종료
} // if end
// 검색 기준 - 정수, DB로 봤을 때 기본키, 설계 시 미리 정해야 한다.
System.out.print("검색할 정수 : ");
String search = scan.nextLine();
int snum = Integer.parseInt(search);
// 감추어져 있기 때문에 하나씩 꺼내어 비교해야 한다.
// data를 하나씩 꺼내어 number 필드를 확인
// 1. 중복된 정수 값은 없다고 가정
for(DataDto d : datas){
if(snum == d.getNumber()){
// 찾는 값과 같으면 출력, 찾고자 하는 데이터
System.out.println("검색 결과>");
System.out.println("정수 : " + d.getNumber() + ",");
System.out.println("문자열 : " + d.getStr() + ",");
System.out.println("실수 : " + d.getFnumber());
System.out.println("---------------------------- ");
return;// 검색 기능 종료
} // if end
} // for end
System.out.println("검색 결과가 없습니다.");
} // serchData end
//순서는 크게 중요하지 않다.
private void outputData() {
// 모든 입력된 데이터를 출력한다.
System.out.println("2. 데이터 출력");
System.out.println("-------------");
// 데이터 유무 확인
if(datas.size() == 0){
// 여기서 출력 메소드 종료
System.out.println("데이터가 없습니다. 이전 문구로 돌아갑니다.");
return; // 메소드 종료
} // if end
// 데이터 저장 개수만큼 반복 출력(여러개일 것을 가정하고 프로그램을 짠다.)
// 1. for문 사용
// for(int i = 0; i < datas.size(); i++){
// DataDto d = datas.get(i); // 묶음으로 꺼내오기
// System.out.println("정수 : " + d.getNumber() + ",");
// System.out.println("문자열 : " + d.getStr() + ",");
// System.out.println("실수 : " + d.getFnumber());
// System.out.println("---------------------------- ");
// }
// 2. for edch문 사용
for(DataDto d : datas){
System.out.println("정수 : " + d.getNumber() + ",");
System.out.println("문자열 : " + d.getStr() + ",");
System.out.println("실수 : " + d.getFnumber());
System.out.println("---------------------------- ");
}
} // outputData end
private void inputData(){
// 기능 구현 : 출력문구 -> 입력 -> 변환 -> dto에 담기 -> dto를 ArrayList에 담기
System.out.println("1. 데이터 입력");
System.out.println("-------------");
// 입력 받을 변수 초기화
int num = 0;
String s = null;
float fnum = 0.0f;
// dto 형태로 만든 ArrayList에는 각각의 dto로 묶인 데이터가 들어갈 공간이 생성된다.
// dto로 묶인 데이터가 들어갈 수 있도록 인스턴스 생성하기
DataDto data = new DataDto();
// 정수 문자열 입력
System.out.print("정수 입력 : ");
s = scan.nextLine();
// 정수문자열 -> 정수
num = Integer.parseInt(s);
// dto에 담기
data.setNumber(num);
// 문자열 입력
System.out.print("문자열 입력 : ");
s = scan.nextLine();
data.setStr(s);
// 실수 문자열 입력
System.out.print("실수 입력 : ");
s = scan.nextLine();
// 실수문자열 -> 실수
fnum = Float.parseFloat(s);
data.setFnumber(fnum);
// ArrayLIst datas에 data 한 묶음 넣기
datas.add(data);
}
}//class end
실습) 데이터 수정 만들기
'공부기록 > Java' 카테고리의 다른 글
4월 13일 (1) Java - 기타 제어자, 생성자 (0) | 2023.04.13 |
---|---|
4월 12일 (2) Java - 객체지향 (0) | 2023.04.12 |
4월 11일 (2) Java - 변수 용어, 저장 위치 (0) | 2023.04.11 |
4월 11일 (1) Java - 배열, 리스트 (0) | 2023.04.11 |
4월 10일 (2) Java - 참조 변수, 배열 (0) | 2023.04.10 |