JAVA1 - 15.2 나의 앱 만들기 (배열)

2022. 1. 23. 16:22·youtube.com|user|egoing2/JAVA1
728x90


배열
Array

 

 예제를 통해 배열을 살펴보자.

 

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 dividend1 = income*0.5;
		double dividend2 = income*0.3;
		double dividend3 = income*0.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);
		System.out.println("Dividend 2 : "+dividend2);
		System.out.println("Dividend 3 : "+dividend3);
		
	}

}

 예제의 코드 중에서,

 

double dividend1 = income*0.5;

 0.5는 동업자1의 지분율이 50%를 나타낸다는 것이다. 

여기에 이름을 붙인다면 0.5 의 의미가 더 분명해질 것이다. 

 

 동업자들의 지분율의 의미를 더욱 분명하게 하기 위해서 지분율을 변수화 시켜 보자.

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 rate1 = 0.5;
		double rate2 = 0.3;
		double rate3 = 0.2;
		// 1억줄의 코드가 있다면...
		double dividend1 = income*rate1;
		double dividend2 = income*rate2;
		double dividend3 = income*rate3;
		
		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);
		System.out.println("Dividend 2 : "+dividend2);
		System.out.println("Dividend 3 : "+dividend3);
		
	}

}

 

 rate1, rate2, rate3은 상당히 흔한 이름이다. rate라는 동일한 이름을 사용해서 괜찮지 만약 다른 이름들을 가지고 있다면 같은 성격의 데이터인지 분명하지 않을 수 있다.

 그런데 변수화 시킨 코드 사이에 예를 들어 1억 줄의 코드가 있다면, 그리고 그 안에서 누군가가 rate의 이름을 바꿨다면 우리의 프로그램은 이상하게 작동할 것이다. 여기서 얻을 수 있는 것은 변수가 많을 수록, 변수가 더럽혀지기 쉽다는 것이다. 

 

 이럴 때 사용할 수 있는 환상적인 도구가 바로 배열이다.

 

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];
		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);
		System.out.println("Dividend 2 : "+dividend2);
		System.out.println("Dividend 3 : "+dividend3);
		
	}

}

 

 

70000.0 입력값을 넣어보니 동일하게 값이 나오는 것을 확인할 수 있다.

 

 이전과 동일하게 동작하는 코드이지만,

배열을 도입함으로서 서로 연관된 값이라는 것을 쉽게 알 수 있고 위에서 변수화를 했을 때는 변수가 3개였는데

배열을 사용했을 때에는 하나의 변수만 존재하기 때문에 변수가 더럽혀질, 오염될 가능성이 현저하게 줄어들었다.

 

PS. 배열은 다음 시간에 알아볼 반복문과 함께 사용한다면 폭발적인 시너지 효과를 발휘한다.

 

 

저작자표시 (새창열림)

'youtube.com|user|egoing2 > JAVA1' 카테고리의 다른 글

JAVA1 - 16.1 나의 앱 만들기 (메소드)  (8) 2022.01.24
JAVA1 - 15.3 나의 앱 만들기 (반복문)  (4) 2022.01.24
JAVA1 - 15.1 나의 앱 만들기 (조건문)  (2) 2022.01.22
JAVA1 - 14.3 나의 앱 만들기 (입력값 도입)  (2) 2022.01.22
JAVA1 - 14.2 나의 앱 만들기 (변수 도입)  (0) 2022.01.21
'youtube.com|user|egoing2/JAVA1' 카테고리의 다른 글
  • JAVA1 - 16.1 나의 앱 만들기 (메소드)
  • JAVA1 - 15.3 나의 앱 만들기 (반복문)
  • JAVA1 - 15.1 나의 앱 만들기 (조건문)
  • JAVA1 - 14.3 나의 앱 만들기 (입력값 도입)
ro117youshin
ro117youshin
코딩 / 외국어공부 (영어, 중국어) / 독서 등 자기계발을 기록합니다.
  • ro117youshin
    Taking an extra step
    ro117youshin
  • 전체
    오늘
    어제
    • 분류 전체보기 (153)
      • DDD (5)
      • JAVA (13)
      • Spring Boot (2)
      • Spring (4)
      • MySQL (1)
      • C (1)
      • Algorithm & Data Structure (34)
        • study (15)
        • programmers (0)
        • boj (18)
        • assignments (1)
      • CS: Computer Science (6)
        • CS50 2019 (4)
        • Network (2)
        • Database (0)
      • Git (3)
      • foreign language (16)
        • English (0)
        • Chinese (16)
      • BOOK (2)
      • ETC (2)
      • youtube.com|user|egoing2 (64)
        • WEB1 - HTML & Internet (5)
        • WEB2 - CSS (9)
        • WEB2 - JavaScript (18)
        • JavaScript Immutability (0)
        • DATABASE1 (4)
        • DATABASE2 MySQL (12)
        • JAVA1 (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    js
    mysql
    css
    코딩공부
    BOJ
    도메인 주도 설계
    HSK6급모의고사
    Java
    HSK6급필수어휘
    객체
    JAVA1
    자바
    HSK6급공부
    DATABASE2
    조건문
    Java자료구조
    HSK6급
    HTML
    백준
    Domain Driven Design
    ddd
    variable
    baekjoon
    나의 앱 만들기
    javascript
    생활코딩
    최범균
    개발공부
    중국어공부
    알고리즘문제
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
ro117youshin
JAVA1 - 15.2 나의 앱 만들기 (배열)
상단으로

티스토리툴바