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

[μƒν™œμ½”λ”©] JAVA1 - 14. λ‚˜μ˜ μ•± λ§Œλ“€κΈ° 2

by πŸ‡λ°•λ΄‰λ΄‰πŸ‡ 2022. 9. 18.

 

 

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

-  5. λ‚˜μ˜ μ•± λ§Œλ“€κΈ° - μ˜€λ¦¬μ—”ν…Œμ΄μ…˜ 2 -

-  6. λ‚˜μ˜ μ•± λ§Œλ“€κΈ° - 쑰건문 -

-  7. λ‚˜μ˜ μ•± λ§Œλ“€κΈ° - λ°°μ—΄ -

-  8. λ‚˜μ˜ μ•± λ§Œλ“€κΈ° - 반볡문 -

 


 

5. λ‚˜μ˜ μ•± λ§Œλ“€κΈ° - μ˜€λ¦¬μ—”ν…Œμ΄μ…˜ 2

λ°°μš°μ§€ μ•Šμ€ 것듀을 λ°°μ›Œλ‚˜κ°€λŠ” 단계이기 떄문에 κ°•μ˜λ₯Ό 잘 보고 νŒŒμ•…ν•΄λ³΄λ„λ‘ ν•˜μž!

 


6. λ‚˜μ˜ μ•± λ§Œλ“€κΈ° - 쑰건문

ν•΄λ‹Ήκ°•μ˜μ—μ„  쑰건문의 문법에 λŒ€ν•œ μ„€λͺ…을 ν•΄μ£Όμ§€λŠ” μ•Šμ§€λ§Œ 쑰건문을 μ‚¬μš©ν•¨μœΌλ‘œμ¨ 높은 가독성과 νŽΈλ¦¬ν•¨μ„ λŠλ‚„ 수 있게 ν•΄μ£Όμ—ˆλ‹€.

 

μ–΄λ– ν•œ 이유둜 이읡이 λ§Œμ›λ³΄λ‹€ μž‘μ„λ•ŒλŠ” 1번째 μ‚¬λžŒμ΄ 이읡을 λ‹€ κ°€μ Έκ°€κ³ , λ§Œμ›λ³΄λ‹€ 클 κ²½μš°μ—” 5 : 3 : 2둜 λ‚˜λˆ„λŠ” ν•„μš”μ„±μ΄ μžˆλ‹€κ³  μƒκ°ν•˜κ³  μ½”λ“œλ₯Ό μž‘μ„±ν•΄ λ³΄μ•˜λ‹€.

 

public class AccountingIFApp {

	public static void main(String[] args) {
		
		double valueOfSupply = Double.parseDouble(args[0]);
		double vatRate = 0.1;
		double expenseRate = 0.3;
		double vat = valueOfSupply * vatRate;
		double total = valueOfSupply + vat;
		double expense = valueOfSupply*expenseRate;
		double income = valueOfSupply - expense;
		
		double dividend1;
		double dividend2;
		double dividend3;
		
		if(income > 10000.0) { // 이읡이 λ§Œμ›μ΄ λ„˜λŠ”λ‹€λ©΄
			dividend1 = income * 0.5;
			dividend2 = income * 0.3;
			dividend3 = income * 0.2;
		} else { // 이읡이 λ§Œμ›μ΄ λ„˜μ§€ μ•ŠλŠ”λ‹€λ©΄
			dividend1 = income * 1.0;
			dividend2 = income * 0;
			dividend3 = income * 0;
		}
		
		System.out.println("Value of supply : " + valueOfSupply); // 곡급가
		System.out.println("VAT : " + vat); // λΆ€κ°€μ„Έ
		System.out.println("Total : " + total); // 곡급가 + λΆ€κ°€μ„Έ 
		System.out.println("Expense : " + expense); // λΉ„μš© 
		System.out.println("Income : " + income); // 이읡 
		System.out.println("Dividend 1 : " + dividend1 ); // λ°°λ‹Ή1
		System.out.println("Dividend 2 : " + dividend2 ); // λ°°λ‹Ή2
		System.out.println("Dividend 3 : " + dividend3 ); // λ°°λ‹Ή3
	}

}

 

κΈ°μ‘΄μ—λŠ” λͺ¨λ“  이읡을 κ³„μ‚°ν•˜μ—¬ λΆ„λ°°ν•˜μ˜€μ§€λ§Œ μ΄μ œλŠ” 이읡이 λ§Œμ›μ΄λΌλŠ” 기쀀이 생겼기 λ•Œλ¬Έμ— 이읡을 기반으둜 수읡의 ꡬ쑰λ₯Ό κ²°μ •ν•΄μ•Ό ν•œλ‹€.

κ·Έλž˜μ„œ if ~ else을 μ‚¬μš©ν•˜μ—¬ λ§Œμ›μ΄ λ„˜μ–΄κ°ˆ κ²½μš°μ—” κΈ°μ‘΄κ³Ό 같은 식을 μž‘μ„±ν•΄μ£Όκ³ , λ§Œμ›μ΄ λ„˜μ§€ μ•Šμ•˜λ‹€λ©΄ 첫번째 μ‚¬λžŒλ§Œ μˆ˜μ΅μ„ κ°€μ§ˆ 수 있게 λ‚˜λ¨Έμ§€ μ‚¬λžŒμ€ 0, 첫번째 μ‚¬λžŒμ€ 1을 κ³±ν•΄μ£Όλ©΄ 각 쑰건에 맞게 λ“€μ–΄κ°€ μž…λ ₯값이 λ‹€λ₯Έλ•Œ λ§ˆλ‹€ λ‹€λ₯Έ κ²°κ³Όλ₯Ό λ‚΄λ³΄λ‚΄λŠ”κ²ƒμ„ 확인할 수 μžˆμ—ˆλ‹€.

 

 


7.  λ‚˜λ§Œμ˜ μ•± λ§Œλ“€κΈ° - λ°°μ—΄

public class AccountingArrayApp {

	public static void main(String[] args) {
		
		double valueOfSupply = Double.parseDouble(args[0]);
		double vatRate = 0.1;
		double expenseRate = 0.3;
		double vat = valueOfSupply * vatRate;
		double total = valueOfSupply + vat;
		double expense = valueOfSupply*expenseRate;
		double income = valueOfSupply - expense;
		
		double[] dividendRates = new double[3]; // doubleν˜•μ˜ 데이터λ₯Ό 3개λ₯Ό 담을 수 μžˆλŠ” μˆ˜λ‚©μƒμž 생성
		dividendRates[0] = 0.5;
		dividendRates[1] = 0.3;
		dividendRates[2] = 0.2;
		
		double dividend1 = income * dividendRates[0];
		double dividend2 = income * dividendRates[1];
		double dividend3 = income * dividendRates[2];
		
		System.out.println("Value of supply : " + valueOfSupply); // 곡급가
		System.out.println("VAT : " + vat); // λΆ€κ°€μ„Έ
		System.out.println("Total : " + total); // 곡급가 + λΆ€κ°€μ„Έ 
		System.out.println("Expense : " + expense); // λΉ„μš© 
		System.out.println("Income : " + income); // 이읡 
		System.out.println("Dividend 1 : " + dividend1 ); // λ°°λ‹Ή1
		System.out.println("Dividend 2 : " + dividend2 ); // λ°°λ‹Ή2
		System.out.println("Dividend 3 : " + dividend3 ); // λ°°λ‹Ή3
	}

}

 

 

λ™μ—…μžλ“€μ΄ 배당받을 λΉ„μœ¨ 5 : 3 : 2 λŠ” μ½”λ“œμ— 직접 수치λ₯Ό μž‘μ„±ν•˜κ±°λ‚˜ dividendRate1, dividendRate2, dividendRate3 μ΄λΌλŠ” λ³€μˆ˜μ— 0.5 , 0.3, 0.2 λ₯Ό λ„£λŠ” 방법도 μžˆλ‹€.

ν•˜μ§€λ§Œ κ·Έλ ‡κ²Œ ν–ˆμ„ κ²½μš°μ— λ³€μˆ˜μ˜ 양이 λ§Žμ•„μ§€κΈ° λ•Œλ¬Έμ— 가독성을 μœ„ν•΄ μ‚¬μš©ν•œ λ³€μˆ˜μ˜ λͺ©μ μ΄ μ‚¬λΌμ§€κ²Œ λ˜λŠ” 것이닀.

κ·Έλž˜μ„œ μš°λ¦¬λŠ” λ°°λ‹Ήλ₯ μ΄λΌλŠ” λΉ„μŠ·ν•œ μ„±κ²©μ˜ 데이터λ₯Ό ν•œκ³³μ— λͺ¨μ•„ ν•˜λ‚˜μ˜ λ³€μˆ˜μ— λ‹΄μ•„μ£ΌλŠ” λ°°μ—΄μ΄λΌλŠ” 것을 μ‚¬μš©ν•΄ λ‹΄μ•„λ‘˜ μˆ˜λ„ μžˆλ‹€.

 

μ‹€μˆ˜ν˜• λ³€μˆ˜ dividenRates μ•ˆμ— μ‹€μˆ˜ν˜• 데이터 3개λ₯Ό 담을 수 있게 new double[3]을 λ„£μ–΄μ£Όκ³  μ°¨λ‘€λ‘œ 값을 λ„£μ–΄μ£Όκ³  μ‹€ν–‰μ‹œμΌœμ£Όλ©΄ 이전결과와 같은 κ²°κ³Όλ₯Ό λ³΄μ—¬μ£ΌλŠ” 것을 확인할 수 μžˆλ‹€.

이둜써 배열덕뢄에 λ³€μˆ˜ 1개둜 μ—¬λŸ¬κ°œμ˜ 값을 담을 μˆ˜μžˆλ‹€λŠ” 사싀을 μ‹€μŠ΅μ„ 톡해 μ•Œ 수 있게 λ˜μ—ˆλ‹€.

 

 


8. λ‚˜λ§Œμ˜ μ•± λ§Œλ“€κΈ° - 반볡문

λ°°μ—΄κ³Ό λ°˜λ³΅λ¬Έμ„ ν•¨κ»˜ μ‚¬μš©ν•΄μ„œ 더 λ‚˜μ€ μ½”λ“œλ₯Ό λ§Œλ“€μ–΄ 보렀고 ν•œλ‹€.

 

μ΄λ²ˆμ—λŠ” ν˜„μž¬λŠ” λ™μ—…μžκ°€ 3λͺ…이기 λ•Œλ¬Έμ— μ†μœΌλ‘œ 3λ²ˆμ„ 써도 어렀움이 μ—†μ§€λ§Œ λ§Œμ•½ λ‚΄κ°€ 큰 기업을 μš΄μ˜ν•΄ μˆ˜λ§Žμ€ νˆ¬μžμžκ°€ μžˆλ‹€κ³  κ°€μ •ν–ˆμ„ λ•Œ 투자자수만큼 수기둜 직접 μ“°λŠ”κ²ƒμ€ 어렀움이 μžˆμ„ 뿐만 μ•„λ‹ˆλΌ 버그가 λ°œμƒν•΄λ„ 버그λ₯Ό μ°Ύμ•„λ‚΄λŠ”λ° 였랜 μ‹œκ°„μ΄ 걸릴 것이닀.

κ·Έλ ‡κΈ° λ•Œλ¬Έμ— μš°λ¦¬λŠ” λ°˜λ³΅λ¬Έμ„ μ‚¬μš©ν•΄μ„œ μˆ˜μ‹œλ‘œ μž‘μ„±ν•˜μ§€ μ•Šκ³  투자자수만큼 κ²°κ³Όκ°€ 좜λ ₯λ˜λ„λ‘ ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€μ–΄ λ³Ό μ˜ˆμ •μ΄λ‹€.

 

public class AccountingArrayLoopApp {

	public static void main(String[] args) {
		
		double valueOfSupply = Double.parseDouble(args[0]);
		double vatRate = 0.1;
		double expenseRate = 0.3;
		double vat = valueOfSupply * vatRate;
		double total = valueOfSupply + vat;
		double expense = valueOfSupply*expenseRate;
		double income = valueOfSupply - expense;
		
		System.out.println("Value of supply : " + valueOfSupply); // 곡급가
		System.out.println("VAT : " + vat); // λΆ€κ°€μ„Έ
		System.out.println("Total : " + total); // 곡급가 + λΆ€κ°€μ„Έ 
		System.out.println("Expense : " + expense); // λΉ„μš© 
		System.out.println("Income : " + income); // 이읡 
		
		double[] dividendRates = new double[3]; // doubleν˜•μ˜ 데이터λ₯Ό 3개λ₯Ό 담을 수 μžˆλŠ” μˆ˜λ‚©μƒμž 생성
		dividendRates[0] = 0.5;
		dividendRates[1] = 0.3;
		dividendRates[2] = 0.2;
		
		int i = 0;
		while(i < dividendRates.length) {
			//System.out.println("Dividend : " + (income*dividendRates[i]) );
			System.out.println(String.format("Dividend %d : " + (income*dividendRates[i]), i+1));
			i = i + 1;
		}
	}

}

κΈ°μ‘΄μ—λŠ” ν•˜λ‚˜ν•˜λ‚˜ System.out.println을 μ‚¬μš©ν•΄μ„œ 좜λ ₯ν•΄μ£Όμ—ˆμ§€λ§Œ 반볡문 while을 μ‚¬μš©ν•΄μ„œ μ–Όλ§ˆλ‚˜ λ°˜λ³΅ν•  것인지 λ²”μœ„λ₯Ό μ„€μ •ν•΄ μ€€ λ’€ 지정해 μ€€ ν›„ νŠΉμ •νšŸμˆ˜λ§ŒνΌ κ²°κ³Όκ°€ λ°˜λ³΅λ˜λ„λ‘ μ„€μ •ν•΄ μ£Όμ—ˆλ‹€.

 

μ΄λ ‡κ²Œ μž‘μ„±ν•΄ 쀄 경우 반볡문 λ‚΄μ—μ„œ λ¬Έμ œκ°€ λ°œμƒν•΄λ„ μˆ˜μ •ν•΄μ•Όν•  μ½”λ“œμ˜ 양이 적어 ν•˜λ‚˜ν•˜λ‚˜ μž…λ ₯ν–ˆμ„λ•Œ μ—λŸ¬κ°€ λ°œμƒν–ˆμ„λ•Œ μ—λŸ¬λ₯Ό κ΄€λ¦¬ν•˜λŠ” μ‹œκ°„λ³΄λ‹€ 훨씬 μ λ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€.

 

 

 

λ°˜μ‘ν˜•

λŒ“κΈ€