κ°œμΈκ³΅λΆ€/JAVA

[μƒν™œμ½”λ”©] JAVA1 - 11. μž…λ ₯κ³Ό 좜λ ₯ (+ AdjustCapsLockLEDForKeyTransitionHandling μ—λŸ¬μž‘κΈ°)

πŸ‡λ°•λ΄‰λ΄‰πŸ‡ 2022. 9. 15. 03:29

 

 

μƒν™œμ½”λ”© JAVA1

-  1. μž…λ ₯κ³Ό 좜λ ₯ -

-  2. μž…λ ₯κ³Ό 좜λ ₯ - arguments & parameter -

 


 

1. μž…λ ₯κ³Ό 좜λ ₯

ν”„λ‘œκ·Έλž¨μ΄λΌκ³  ν•˜λŠ” 것은 λ“€μ–΄μ˜€λŠ” μ •λ³΄μ˜ μž…λ ₯을 μ²˜λ¦¬ν•΄μ„œ 좜λ ₯을 λ§Œλ“€μ–΄λ‚΄λŠ” 기계라고 ν•  수 μžˆλ‹€.

λ˜ν•œ, μž…λ ₯ν•˜λŠ” Input의 ν˜•νƒœλŠ” Argument, File, Network λ“± λ‹€μ–‘ν•œ ν˜•νƒœλ‘œ 듀어와 Monitor, File, Audio λ“±μœΌλ‘œ 좜λ ₯ Output λ˜μ–΄μ„œ λ‚˜μ˜€κ²Œ λœλ‹€.

 

였늘의 λͺ©ν‘œλŠ” μš°λ¦¬κ°€ μ–΄λ– ν•œ μž…λ ₯값을 μ£ΌλŠλƒμ— 따라 λ‹€λ₯Έ 좜λ ₯값이 결과둜 λ‚˜μ˜€λŠ”μ§€ μ•Œμ•„λ³΄λŠ” 것이닀.

 

import org.opentutorials.iot.Elevator;
import org.opentutorials.iot.Lighting;
import org.opentutorials.iot.Security;

public class OkJavaGoInHome {

	public static void main(String[] args) {
		
		String id = "JAVA APT 507";
		
		// Elevator call
		Elevator myElevator = new Elevator(id);
		myElevator.callForUp(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 + " / Hall Lamp");
		floorLamp.on();

	}

}

μ—¬κΈ° μ§‘μ—μ„œ 자주 μ‚¬μš©ν•˜λŠ” μ œν’ˆμ„ 순차적으둜 μž‘λ™ν•  수 μžˆλŠ” ν”„λ‘œκ·Έλž¨μ΄ μžˆλ‹€.

ν‰μ†Œμ—λŠ” 잘 μ‚¬μš©ν•  수 μžˆμ§€λ§Œ λ§Œμ•½ 이사λ₯Ό κ°€κ²Œλœλ‹€λ©΄ 이 ν”„λ‘œκ·Έλž¨μ€ JAVA APT 507둜 κ³ μ •λ˜μ–΄ μžˆμ–΄μ„œ μ΄μ‚¬ν•œ κ³³μ—μ„œ 같은 ν”„λ‘œκ·Έλž¨μ„ μ‚¬μš©ν•˜κ³  μ‹Άλ‹€λ©΄ μ½”λ“œλ₯Ό μ§μ ‘λ³€κ²½ν•œ ν›„ 컴파일 ν•˜μ—¬ λ‹€μ‹œ λ§Œλ“€μ–΄μ•Ό ν•  것이닀.

λ˜ν•œ 이 ν”„λ‘œκ·Έλž¨μ„ μ—¬λŸ¬μ‚¬λžŒμ΄ μ‚¬μš©ν•˜κ²Œ λœλ‹€λ©΄ μ†ŒμŠ€μ½”λ“œλ₯Ό λ§€λ²ˆλ°”κΎΈκ³  μ»΄νŒŒμΌν•΄μ•Όν•˜λŠ” λ²ˆκ±°λ‘œμ›€μ΄ μ‘΄μž¬ν•  것이닀.

 

κ·Έλž˜μ„œ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λ©΄ μ‚¬μš©μžκ°€ ν…μŠ€νŠΈμ •λ³΄λ₯Ό 직접 μž…λ ₯ν•΄μ„œ ID정보λ₯Ό μ…‹νŒ…ν•  수 μžˆλŠ” ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€μ–΄λ³΄λ €κ³  ν•œλ‹€.

 

인터넷에 μ°Ύμ•„λ³΄λ‹ˆ μ΄λŸ¬ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ£Όμ–΄μ•Ό λ™μž‘λœλ‹€λŠ” 것을 ν™•μΈν–ˆκ³ , μš°λ¦¬λŠ” 기쑴에 μ§‘μ˜ 정보λ₯Ό λ‹΄μ•˜λ˜ λ³€μˆ˜ id에 μ΄λŸ¬ν•œ μ½”λ“œλ₯Ό μ‘μš©μ‹œμΌœμ„œ λ„£μ–΄μ£Όμ—ˆλ‹€.

 

λ§Œμ•½ μ—λŸ¬κ°€ λ°œμƒλœλ‹€λ©΄ import javax.swing.JOptionPane; 을 μž…λ ₯ν•΄μ£Όλ©΄ λœλ‹€.

 

import javax.swing.JOptionPane;

import org.opentutorials.iot.DimmingLights;
import org.opentutorials.iot.Elevator;
import org.opentutorials.iot.Lighting;
import org.opentutorials.iot.Security;

public class OkJavaGoInHomeInput {

	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);
		
		// 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 + " / Hall Lamp");
		floorLamp.on();
		
		DimmingLights moodLamp = new DimmingLights(id + " moodLamp");
        // setBrightλΌλŠ” λ©”μ†Œλ“œμ•ˆμ—λŠ” doubleν˜•μ΄ λ“€μ–΄κ°€λ―€λ‘œ parseDouble둜 string -> double ν˜•λ³€ν™˜
		moodLamp.setBright(Double.parseDouble(bright));
		moodLamp.on();

	}

}

λ˜ν•œ μΆ”κ°€μ μœΌλ‘œ μ „λ“±μ˜ 밝기λ₯Ό μ‘°μ ˆν•΄μ£ΌκΈ°μœ„ν•œ 창을 μƒˆλ‘œ μΆ”κ°€ν•΄μ£Όμ—ˆλŠ”λ° μ΄λ•Œμ˜ 값은 숫자둜 λ“€μ–΄κ°€μ•Όν•˜κΈ° λ•Œλ¬Έμ— ν˜•μ„ λ³€ν™˜ν•΄μ£ΌλŠ” 과정을 μΆ”κ°€ν•΄μ£Όμ—ˆλ‹€.

 

μ‹€ν–‰ν•΄μ£Όλ©΄ 2개의 input창을 κ±°μ³μ„œ λ‚΄κ°€ μž…λ ₯ν•œ κ°’κ³Ό ν•¨κ»˜ λͺ…령이 μ²˜λ¦¬λ˜μ–΄ μžˆλŠ” 결과값을 확인할 수 μžˆλ‹€.

 

μ΄λ ‡κ²Œ 되면 μ–Έμ œλ‚˜ λ˜‘κ°™μ΄ λ™μž‘ν•˜λŠ” 것이 μ•„λ‹ˆλΌ μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 값에 따라 λ‹€λ₯΄κ²Œ λ™μž‘ν•˜λ©°, μ½”λ“œλ₯Ό λͺ¨λ₯΄λŠ” 일반 μ‚¬μš©μžλ„ μ†μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆλŠ” ν”„λ‘œκ·Έλž¨μ΄ 된 것이닀.

 


2. μž…λ ₯κ³Ό 좜λ ₯ : arguments & parameter

μ‚¬μš©μžκ°€ 맀번 정보λ₯Ό μž…λ ₯ν•΄μ„œ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λŠ” 방법은 μ‚¬μš©μžμ—κ²ŒλŠ” 정말 쒋은 λ°©λ²•μ΄μ§€λ§Œ κ°œλ°œν•˜λŠ” μ‚¬λžŒμ˜ μž…μž₯μ—μ„œλŠ” ν…ŒμŠ€νŠΈλ₯Ό ν•  λ•Œλ§ˆλ‹€ 값을 μž…λ ₯ν•΄μ•Ό ν•˜λŠ” 과정이 λ‹€μ†Œ λΆˆνŽΈν•˜λ‹€κ³  생각할 수 μžˆλ‹€.

κ·Έλž˜μ„œ μ΄λ²ˆμ—λŠ” ν”„λ‘œκ·Έλž¨μ•ˆμ— 값을 미리 μ„€μ •ν•΄μ£Όμ–΄μ„œ 맀번 μž…λ ₯ν•˜μ§€ μ•Šκ²Œ ν•˜λŠ” 방법을 μ•Œμ•„λ³΄λ €κ³  ν•œλ‹€.

 

Runλ²„νŠΌ μš°μΈ‘μ— μž‘κ²Œ β–Ύλ²„νŠΌμ„ ν΄λ¦­ν•œ ν›„ Run Configurations... λ₯Ό λˆŒλŸ¬μ€€λ‹€.

 

그러면 μš°λ¦¬κ°€ 이곳에 μž‘μ„±ν•œ Java Application리슀트λ₯Ό λ³Ό 수 μžˆλŠ”λ° ν˜„μž¬ μš°λ¦¬κ°€ ν…ŒμŠ€νŠΈ ν•΄ λ³Ό μžλ°” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 클릭해 μ€€λ‹€.

(λ§Œμ•½, ν•΄λ‹Ή μžλ°”νŒŒμΌμ΄ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ Runλ²„νŠΌμ„ ν•œ 번 λˆŒλŸ¬μ€€ λ‹€μŒμ— λ‹€μ‹œ 접속해 μ£Όλ©΄ λœλ‹€.)

 

Arguments탭에 접속해 μž…λ ₯값을 μž…λ ₯ν•΄ μ£Όλ©΄ λœλ‹€.

μ΄λ•Œ, κ·ΈλŒ€λ‘œ 띄어쓰기가 λ°œμƒλ˜λ©΄ ν•œ 개의 μž…λ ₯값이 μ•„λ‹Œ λ”°λ‘œλ”°λ‘œ μΈμ‹ν•˜κΈ° λ•Œλ¬Έμ— μž‘μ€λ”°μ˜΄ν‘œμ•ˆμ— 값을 λ„£μ–΄μ€€λ‹€.

λ˜ν•œ ν•œ 개의 값이 μ•„λ‹Œ μ—¬λŸ¬ 개의 값을 μ›ν•˜λ©΄ μŠ€νŽ˜μ΄μŠ€λ°”λ₯Ό λˆŒλŸ¬μ„œ λ‚˜λˆ μ„œ 값을 μž…λ ₯ν•˜λ©΄ λœλ‹€.

상단에 μžˆλŠ” Name은 λ‚΄κ°€ μ–΄λ– ν•œ μž…λ ₯값을 μ μ—ˆλŠ”μ§€ λ”°λ‘œ 적을 수 μžˆμ–΄ 파일 이름 μ˜†μ— μž‘μ„±ν•΄λ„ λœλ‹€.

 

 Applyλ₯Ό λˆŒλŸ¬μ€€ ν›„ Run λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ μ•„κΉŒμ™€ λ³€ν•¨μ—†λŠ” κ²°κ³Όκ°€ λ‚˜μ˜€λŠ”λ° 이제 μš°λ¦¬λŠ” Argumentsλ₯Ό λ°›μ•„λ‚΄λŠ” μ½”λ“œλ‘œ μˆ˜μ •ν•΄μ•Ό ν•œλ‹€.

 

import javax.swing.JOptionPane;

import org.opentutorials.iot.DimmingLights;
import org.opentutorials.iot.Elevator;
import org.opentutorials.iot.Lighting;
import org.opentutorials.iot.Security;

public class OkJavaGoInHomeInput {

	public static void main(String[] args) {
		
		String id = args[0]; // Java APT 507
		String bright = args[1]; // 10.0

		
		// Elevator call
		Elevator myElevator = new Elevator(id);
		myElevator.callForUp(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 + " / Hall Lamp");
		floorLamp.on();
		
		DimmingLights moodLamp = new DimmingLights(id + " moodLamp");
		moodLamp.setBright(Double.parseDouble(bright));
		moodLamp.on();

	}

}

μ•„κΉŒμ „ μš°λ¦¬κ°€ Argumentsλž€μ— 적은 μž…λ ₯값은 argsλ₯Ό ν†΅ν•΄μ„œ 값을 λ°›μ•„μ˜€κ²Œ λ˜λŠ”λ° 이 값듀은 Stringν˜•μ΄ λ“€μ–΄κ°ˆ 수 μžˆλŠ” λ°°μ—΄μ•ˆμœΌλ‘œ λ“€μ–΄κ°€κ²Œ λœλ‹€.

κ·Έλ ‡κΈ° λ•Œλ¬Έμ— λ°°μ—΄μ˜ 0번째 μ•ˆμ— μžˆλŠ” 값은 'Java APT 507'이 λ˜λŠ” 것이고, 1번째의 값이 '10.0'이 λ˜λŠ” 것이닀.

 

이 각자의 값듀을 λ³€μˆ˜  id와 bright에 λ„£μ–΄μ£Όλ©΄ λ˜λŠ” 것이고 μ‹€ν–‰ν•˜λ©΄ μ•„κΉŒμ˜ νŒμ—…μ°½μ΄ λœ¨μ§€λŠ” μ•Šμ§€λ§Œ μ œλŒ€λ‘œ 된 값이 λ‚˜μ˜€κ²Œ λ˜λŠ” 것을 확인할 수 μžˆλ‹€.

 

λ˜ν•œ 디버깅을 ν†΅ν•΄μ„œ 각 λ³€μˆ˜μ•ˆμ— 값듀이 μ œλŒ€λ‘œ λ“€μ–΄κ°”λŠ”μ§€ 확인할 수 μžˆλ‹€.

 

μš°λ¦¬κ°€ 이λ₯Ό ν†΅ν•΄μ„œ μ•Œ 수 μžˆλŠ”κ±΄ μ½”λ“œμ•ˆμ— 있던 argsλŠ” λ§€κ°œλ³€μˆ˜λ‘œ parameter라고 ν•˜λ©° μš°λ¦¬κ°€ μ‹€μ œκ°’μ„ μž…λ ₯ν–ˆλ˜ 값듀을 arguments라고 ν•œλ‹€.

 

 


2022-09-14 22:08:26.352 java[6576:583603] TSM AdjustCapsLockLEDForKeyTransitionHandling - _ISSetPhysicalKeyboardCapsLockLED Inhibit

 

κ°•μ˜λ₯Ό λ“€μœΌλ©΄μ„œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ³  ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λŠ”λ° μ΄λŸ¬ν•œ μ—λŸ¬κ°€ λ°œμƒν•˜λŠ” 것을 ν™•μΈν•˜μ˜€λ‹€.

μ•„λ‹ˆ 이게 λ­μ‹œμ—¬... 이거 ν•΄κ²°ν•œλ‹€κ³  μ†Œμ€‘ν•œ 30뢄을 λ‚ λ Έλ‹€...

κ²€μƒ‰ν•΄λ³΄λ‹ˆ 보톡 λ§₯뢁을 μ‚¬μš©ν•˜λŠ” μ‚¬λžŒν•œν…Œ λ°œμƒλ˜λŠ” μ—λŸ¬μΈκ²ƒ 같은데 λ‚˜μ™€ 같은 μ—λŸ¬λ‘œ κ³ μƒν•˜λŠ” μ‚¬λžŒλ“€μ€ 30뢄날리지 말고 μ—΄μ½”ν•˜μ‹œκΈΈ λ°”λž€λ‹€!

 

1. command + space ν‚€λ₯Ό λˆ„λ₯Έλ‹€μŒ ν‚€λ³΄λ“œλ₯Ό 검색해 μ ‘μ†ν•œλ‹€.

( + 상단바에 μžˆλŠ” μ• ν”Œλ§ˆν¬ → μ‹œμŠ€ν…œν™˜κ²½μ„€μ • → ν‚€λ³΄λ“œ 순으둜 클릭해도 κ°€λŠ₯)

 

2.  μž…λ ₯μ†ŒμŠ€ 클릭후 ν•˜λ‹¨μ— μžˆλŠ” "ν•œ/A ν‚€λ‘œ ABC μž…λ ₯ μ†ŒμŠ€ μ „ν™˜"이 체크가 λ˜μ–΄μžˆλ‹€λ©΄ ν•΄μ œν•΄μ€€λ‹€.

 

3. 체크가 ν•΄μ œλœ ν›„ ν•œ/AλŠ” control + space둜 μ •ν•΄μ Έ μžˆμ§€λ§Œ λ³€κ²½ν•˜κ³  μ‹Άλ‹€λ©΄ 단좕킀에 μ ‘μ†ν•œ 수 μž…λ ₯μ†ŒμŠ€λ₯Ό λˆ„λ₯Έλ‹€μŒμ— "이전 μž…λ ₯ μ†ŒμŠ€ 선택"μ—μ„œ 단좕킀λ₯Ό μž„μ˜λ‘œ λ³€κ²½ν•΄μ£Όλ©΄ λœλ‹€.

 

μ°Έκ³ )

 

How do I solve AdjustCapsLockLEDForKeyTransitionHandling?

I am trying to use KeyListener to input information, such as using the arrow keys to move an object in a plane, but as soon as I press my first key, the error below is thrown: 2021-05-20 09:55:35.400

stackoverflow.com

 

 

λ°˜μ‘ν˜•