*디버거
bug(버그): 프로그램에서 생기는 의도치 않은 오류
debugging(디버깅): 오류를 해결하는 것
debugger(디버거): 오류를 해결하는/분석하는 도구 *디버거 사용하는 법
1) 브레이크 포인터 설정
-- 프로그램을 멈출 곳을 선택한다(이클립스 기준 코딩창 숫자 왼쪽 스크롤 부분을 더블 클릭)
2) debugger(무당벌레 모양 아이콘) 클릭
-- 이클립스 기준 실행(재생) 버튼 왼쪽에 있음
3) perspecitve switch
-- 이클립스 기준 오른쪽 상단의 <Java EE>가 디버그로 바뀐 것을 확인할 수 있음
4) step over 클릭
-- 이클립스 기준 왼쪽 상단에 있으며 단축키 F6
-- step over는 한 단계씩 코드를 실행시키는 것이며 클릭할 시 코딩창 숫자 왼쪽 스크롤 부분에 화살표로 현재 실행된 코드 확인 가능함
5) 한 줄 한 줄이 아닌 어느 범위까지 함께 실행시키고 싶으면 브레이크 포인터 설정 후 resume(F8) 클릭
6) step into(F5) 클릭 시, 메소드(명령어)가 어떤 식으로 실행이 되는지 더 자세하게 볼 수 있음
6-1) step into창에서 빠져나가고 싶을 때는 step retuen(F7) 클릭
7) Terminate 클릭하면 디버그 모드 끝
8) <Java EE>에서 java 클릭하여 코딩창으로 돌아가는 것 잊지 마세요~
*입력과 출력
— 이사할 때마다 내가 쓴 코드를 쓰거나 다른 사람도 쓸 수 있게 하기 위해 id값을 세팅하고 싶어요
프로그램을 실행했을 때 팝업이 뜨면서 텍스트정보를 입력하고 싶다
검색어: java popup input text swing
— 찾은 코드: String path = JoptionPane.showInputDialog(“Enter a path”);
— 혹시 모르니까 OkJavaGoInHome.java 하나 복사해서 진행하기 👉🏻 OkJavaGoInHomeInput.java
import Javax.swing.JOptionPane;
// String id = JoptionPane.showInputDialog(“Enter a path”);에서 Import ‘JOptionPane’ (javax.swing) 선택했을 때 자동 생성되는 코드임
import org.opentutorials.iot.Elevator;
import org.opentutorials.iot.Security;
import org.opentutorials.iot.Lighting;
public class OkJavaGoInHouseInput {
public static void main(String[] args) {
String id = JoptionPane.showInputDialog(“Enter a path”);
// 처음에는오류가 나는데 이유는 JoptionPane은 우리한테 있는 파일이 아니기 때문에 읽어 와야 함
// 클릭해서 Import ‘JOptionPane’ (javax.swing) 선택하면 오류 없어짐
// String id = JoptionPane.showInputDialog(“Enter a path”); 를 복붙해서 “” 안의 대화상자에 들어갈 말 수정해 줌
String id = JoptionPane.showInputDialog(“Enter a ID”);
// 이제 코드 실행해 보면 대화상자에 ID 입력하라고 뜸! JAVA APT 1004 치면 해당 주소로 하기 iot가 진행됨
// Elevator call
Elevator myElevator = new Elevator(id);
myElevator.callForUp(1); // 나 올라갈 건데 엘베 좀 1층으로 보내 줘
// Security off
Security mySecurity = new Security(id);
mySecurity.off();
// Light on
Lighting hallLamp = new Lighting(id+" / Hall Lamp");
hallLamp.on();
Lighting floorLamp = new Lighting(id+" / floorLamp");
floorLamp.on();
}
}
*여러 가지 입력값을 나타내고 싶을 때
import Javax.swing.JOptionPane;
import org.opentutorials.iot.Elevator;
import org.opentutorials.iot.Security;
import org.opentutorials.iot.Lighting;
public class OkJavaGoInHouseInput {
public static void main(String[] args) {
String id = JoptionPane.showInputDialog(“Enter a ID”);
String bright = JoptionPane.showInputDialog(“Enter a Bright level”);
// Elevator call
Elevator myElevator = new Elevator(id);
myElevator.callForUp(1); // 나 올라갈 건데 엘베 좀 1층으로 보내 줘
// Security off
Security mySecurity = new Security(id);
mySecurity.off();
// Light on
Lighting hallLamp = new Lighting(id+" / Hall Lamp");
hallLamp.on();
Lighting floorLamp = new Lighting(id+" / floorLamp");
floorLamp.on(); DimmingLights moodlamp = new DimmingLights(id+” / moodLamp”);
// 과제(1) moodLamp.setBright(**); **의 밝기로 전등을 켜고 싶은데 이걸 대화상자로 설정하고 싶다
// moodLamp.setBright(Bright);
// 처음 이렇게 설정하면 Bright 오류로 SetBright값은 double형이 와야 하는데 넌 String으로 넣었어! 라구 함 그럼 스트링을 더블형으로 컨버팅 해야겠지?
// 검색어: java string to double conversion 찾은 코드: Double.parseDouble(text);
moodLamp.setBright(Double.parseDouble(Bright);
moodLamp.on(); 전등을 켜 주세요
}
}
*arguments(인자) & parameter(매개변수)
-- argument(인자)는 프로그램 시작 시에 사용자가 tex t정보를 주는 것이고, args 라는 Java의 parameter(매개변수)는 입력된 인자의 값을 받아 코드 안에 표현되도록 하는 매개체의 역할을 하는 것
-- 대화상자를 줘서 입력하는 것까지는 했지만 매번 테스트 할 때마다 입력값을 넣어 주기는 귀찮음(사용자는 좋지만)
-- 이클립스에 미리 입력값을 설정해 놓을 수 있는데 이게 arguments! 이클립스의 실행 버튼 옆 ▼를 누르면 Run configurations를 클릭하여 들어갈 수 있음
++ Run As 위에 나오는 파일들은 최근에 실행했던 클래스 리스트임!
Program argumants
기본은 띄어쓰기 기준 1개의 인자로 인식함
작은따옴표(')로 단어 설정 가능
작은옴표로 안 되면 큰따옴표(")로 나눌 것! -- 이클립스 버전에 따라 다른 듯함
Java APT 1004
⇒ Java, APT, 1004: 3개의 입력값으로 인식
'Java APT 1004' '15.0'
⇒ Java APT 1004, 15.0: 2개의 입력값으로 인식
입력값 설정 후 Apply 적용, Run 실행
가장 상단의 Name에 어떤 입력값을 설정했는지 적어 놓으면 보기 편함!
입력값을 넣었으면 어떻게 받는지도 설정해 줘야 함!
public class OkJavaGoInHouseInput {
public static void main(String[] args) {
// Parameter, 매개변수
String id = args[0]; // 컴퓨터는 1이 아닌 0부터 값을 매김! Java APT 1004는 0번째 Arguments이므로 [0]
String bright = args[1];
*다른 Arguments도 테스트 하고 싶다면
실행 버튼 옆 ▼- Run configurations - 만들었던 클래스 duplicate(복사) - Name, Program Arguments 수정 후 Apply
*자주 사용하는 클래스를 리스트에 넣고 싶다면
실행 버튼 옆 ▼- Organize Favorites - Add - 목록 추가 후 OK - OK
*이클립스 등의 매개체 없이 직접 컴파일하고 실행하기
Complie: .java를 .class로 바꾸는 것
Run: .class를 실행하는 것
Input: 실행할 때 입력값을 줌으로써 입력값에 따라 다르게 출력하는 것
*windows version 모든 파일이 내가 가진 파일일 때
컴파일 하는 법
1) 자바가 설치되어 있는지부터 확인!
-- ctrl + R - cmd - java 입력 시 위치가 안 뜨면 자바 없거나 path가 지정되지 않은 것
-- 다운로드 후에도 안 뜨면 내 컴퓨터 - 속성 - 고급 시스템 설정 - 환경 변수 - path - edit - 자바의 bin 경로 추가
2) 컴파일 하고자 하는 .java가 있는 경로 복사 - cmd에 cd 입력 후 띄어쓰기 한 번 - 마우스 오른쪽 버튼(cmd에서 적용되는 붙여넣기 기능) - dir 입력 시 현재 위치에 위치하고 있는 파일들을 보여 줌
3) javac 입력 후 엔터 - javac 컴파일하고자하는파일이름.java - dir 입력해 보면 .class 파일 생성된 것 확인 가능
(안 된다면 javac -cp "." 컴파일하고자하는파일이름.java)
"." = 현재 디렉토리
실행하는 법
1) 컴파일 후 cmd에 java 입력
2) java 실행 하고자 하는 컴파일된파일이름 입력 // .class 확장자는 붙이지 않음!
(안 된다면 javac -cp "." 컴파일하고자하는파일이름)
*windows version 파일 중 다른 사람의 파일로써 경로를 불러온 코드가 있을 때
1) cmd에 jaca 입력하여 컴파일하고자 하는 파일들이 어느 경로에 있는지 파악함
2) javac --class-path(= -cp) ".;최상위폴더;폴더;경로..." 컴파일하고자하는파일이름.java
실행하는 법
1) java -cp ".;최상위폴더이름" 실행하고자하는파일이름 // .class라는 확장자는 붙이지 않음
라이브러리: 다른 사람이 사용할 수 있도록 잘 정돈된 파일
*입력값에 따라 다르게 동작하는 프로그램을 어떻게 실행시킬까?
1) ctrl + R - cmd - tree . 입력: 디렉토리 파일 목록이 출력됨
2) javac 컴파일하고자하는파일이름.java 입력 후 tree . 로 컴파일 잘됐는지(.class 생겼는지) 확인
3) 입력값을 바로 받을 수 없기 때문에 에러가 뜰 텐데 java 컴파일된파일이름 "입력값 0에 대한 값" 1에 대한 입력값 입력 후 엔터
(args가 String일 때는 따옴표 안에, double일 경우 따옴표 없이 사용함)