14.6 나의 앱 만들기 - 조건문
- 제어문을 통해 프로젝트를 개선해보기!
> 자바의 제어문은 조건문/반복문으로 크게 두 가지
- 조건문은 어떤 기준에 따라 변수가 달라지고 그에 따라 결과가 달라지는 경우에 사용함
- income이 만 원보다 작을 때는 dividend1이 돈을 다 가져가고, 만 원 보다 클 경우에는 5:3:2로 나눠야 하면?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
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 );
System.out.println("Dividend 2 : "+ dividend2 );
System.out.println("Dividend 3 : "+ dividend3 );
}
}
|
cs |
- 입력값 5000.0일 때 결과
Value of supply : 5000.0
VAT : 500.0
Total : 5500.0
Expense : 1500.0
Income : 3500.0
Dividend 1 : 3500.0
Dividend 2 : 0.0
Dividend 3 : 0.0
- 입력값 50000.0일 때 결과
Value of supply : 50000.0
VAT : 5000.0
Total : 55000.0
Expense : 15000.0
Income : 35000.0
Dividend 1 : 17500.0
Dividend 2 : 10500.0
Dividend 3 : 7000.0
14.7 나의 앱 만들기 - 배열
- dividendRates라는 배열 생성
> double dividendRates : 더블형 데이터로 이루어져 있는 배열
- 배열을 도입함으로써 dividendRates인 각각의 값들이 연관된 값이라는 것을 분명히 할 수 있게 됨
> 또한 3개였던 변수를 1개로 정리함으로써 변수가 오염될 가능성을 줄여줌
>> 즉, 서로 연관된 데이터를 정리정돈하는 수단이 '배열'임
서로 연관된 데이터를 함께 정리 정돈하고 서로 연관된 값을 그룹핑하여 변수를 간소화 함
- double [] : double형 데이터로 이루어진 배열을 의미
- double[] 변수이름 = new double[변수갯수]
> double [] dividendRates = new double[3]; : double형 데이터 3개를 담을 수 있는 수납 상자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
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 );
}
}
|
cs |
- Run Configurations로 입력값 10000.0 입력했을 때 결과
Value of supply : 10000.0
VAT : 1000.0
Total : 11000.0
Expense : 3000.0
Income : 7000.0
Dividend 1 : 3500.0
Dividend 2 : 2100.0
Dividend 3 : 1400.0
14.8 나의 앱 만들기 - 반복문
- 반복문을 통해 println을 한 줄에 정리할 수 있게 됨
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
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];
dividendRates[0] = 0.5;
dividendRates[1] = 0.3;
dividendRates[2] = 0.2;
int i = 0;
while( i < dividendRates.length) {
System.out.println("Dividend 1 : "+ (income*dividendRates[i]) );
i = i+1;
}
}
}
|
cs |
- Run Configurations로 입력값 10000.0 입력했을 때 결과
Value of supply : 10000.0
VAT : 1000.0
Total : 11000.0
Expense : 3000.0
Income : 7000.0
Dividend 1 : 3500.0
Dividend 1 : 2100.0
Dividend 1 : 1400.0
14.9 나의 앱 만들기 - 메소드
- 메소드는 서로 연관된 코드를 그룹핑해서 이름을 붙힌 정리정돈의 상자이다.
- 메소드를 만들기 위해서 해당 코드에서 오른쪽 클릭 - Refactor - Extract Method 선택해서 이름 지정(+replace 체크 해제)
public static double getVAT(double valueOfsupply, double vatRate) {
return valueOfsupply*vatRate;
> 메소드를 만드는 코드
double vat = getVAT(valueOfsupply, vatRate);
> 만들어진 메소드를 호출 / 실행하는 코드
public static double valueOfsupply = 10000.0;
> 해당 코드를 main의 밖으로 빼면서, main 안과 getVAT() 안에서 모두 사용 가능(전역변수로 바꿈)
vatRate = 0.1
> 해당 코드도 Refactor - Convert Local Variable to Field를 통해 전역변수로 바꿈
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
public class AccountingMethodApp {
public static double valueOfsupply;
public static double vatRate;
private static double expenseRate;
public static void main(String[] args) {
valueOfsupply = 10000.0;
vatRate = 0.1;
expenseRate = 0.3;
print();
}
public static void print() {
System.out.println("Value of supply : "+valueOfsupply);
System.out.println("VAT : "+ getVAT());
System.out.println("Total : "+ getTotal());
System.out.println("Expense : "+ getExpense());
System.out.println("Income : "+ getIncome());
System.out.println("Dividend 1 : "+ getDividend1() );
System.out.println("Dividend 2 : "+ getDividend2() );
System.out.println("Dividend 3 : "+ getDividend3() );
}
public static double getDividend1() {
return getIncome() * 0.5;
}
public static double getDividend2() {
return getIncome() * 0.3;
}
public static double getDividend3() {
return getIncome() * 0.2;
}
public static double getIncome() {
return valueOfsupply - getExpense();
}
public static double getExpense() {
return valueOfsupply*expenseRate;
}
public static double getTotal() {
return valueOfsupply + getVAT();
}
public static double getVAT() {
return valueOfsupply*vatRate;
}
}
|
cs |
- Run Configurations로 입력값 10000.0 입력했을 때 결과
Value of supply : 10000.0
VAT : 1000.0
Total : 11000.0
Expense : 3000.0
Income : 7000.0
Dividend 1 : 3500.0
Dividend 2 : 2100.0
Dividend 3 : 1400.0
14.10 나의 앱 만들기 - 클래스
- 클래스는 서로 연관된 변수와 메소드를 그룹핑하고 이름을 붙힌 정리정리의 상자이다.
> 소프트웨어를 만들어 가는 데에 있어서 구조를 결정하기 때문에 중요함
> 클래스를 통해 코드의 구조를 더 튼튼하고 사용하기 쉽게 만들 수 있음
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
class Accounting{
public static double valueOfsupply;
public static double vatRate;
static double expenseRate;
public static void print() {
System.out.println("Value of supply : "+valueOfsupply);
System.out.println("VAT : "+ getVAT());
System.out.println("Total : "+ getTotal());
System.out.println("Expense : "+ getExpense());
System.out.println("Income : "+ getIncome());
System.out.println("Dividend 1 : "+ getDividend1() );
System.out.println("Dividend 2 : "+ getDividend2() );
System.out.println("Dividend 3 : "+ getDividend3() );
}
public static double getDividend1() {
return getIncome() * 0.5;
}
public static double getDividend2() {
return getIncome() * 0.3;
}
public static double getDividend3() {
return getIncome() * 0.2;
}
public static double getIncome() {
return valueOfsupply - getExpense();
}
public static double getExpense() {
return valueOfsupply*expenseRate;
}
public static double getTotal() {
return valueOfsupply + getVAT();
}
public static double getVAT() {
return valueOfsupply*vatRate;
}
}
public class AccountingClassApp {
public static void main(String[] args) {
Accounting.valueOfsupply = 10000.0;
Accounting.vatRate = 0.1;
Accounting.expenseRate = 0.3;
Accounting.print();
//anotherVariable = ...;
//anotherMethod = ...;
}
}
|
cs |
- Run Configurations로 입력값 10000.0 입력했을 때 결과
Value of supply : 10000.0
VAT : 1000.0
Total : 11000.0
Expense : 3000.0
Income : 7000.0
Dividend 1 : 3500.0
Dividend 2 : 2100.0
Dividend 3 : 1400.0
14.11 나의 앱 만들기 - 인스턴스
- 인스턴스는 하나의 클래스를 복제해서 서로 다른 데이터의 값과 서로 같은 메소드를 가진 복제본을 만드는 것
- new Accounting(); : Accounting 클래스를 복제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
class Accounting{
public double valueOfSupply;
public double vatRate;
public double expenseRate;
public void print() {
System.out.println("Value of supply : " + valueOfSupply);
System.out.println("VAT : " + getVAT());
System.out.println("Total : " + getTotal());
System.out.println("Expense : " + getExpense());
System.out.println("Income : " + getIncome());
System.out.println("Dividend 1 : " + getDiviend1());
System.out.println("Dividend 2 : " + getDiviend2());
System.out.println("Dividend 3 : " + getDiviend3());
}
public double getDiviend1() {
return getIncome() * 0.5;
}
public double getDiviend2() {
return getIncome() * 0.3;
}
public double getDiviend3() {
return getIncome() * 0.2;
}
public double getIncome() {
return valueOfSupply - getExpense();
}
public double getExpense() {
return valueOfSupply * expenseRate;
}
public double getTotal() {
return valueOfSupply + getVAT();
}
public double getVAT() {
return valueOfSupply * vatRate;
}
}
public class AccountingClassApp {
public static void main(String[] args) {
// instance
Accounting a1 = new Accounting();
a1.valueOfSupply = 10000.0;
a1.vatRate = 0.1;
a1.expenseRate = 0.3;
a1.print();
Accounting a2 = new Accounting();
a2.valueOfSupply = 20000.0;
a2.vatRate = 0.05;
a2.expenseRate = 0.2;
a2.print();
a1.print();
}
}
|
cs |
* 어떤 컴퓨터 언어든 본질은 같다!
* 나의 프로젝트를 만들어 보는 것이 중요!
'Java' 카테고리의 다른 글
생활코딩 JAVA 객체 지향 프로그래밍 - (수업 소개+) 남의 클래스 & 남의 인스턴스 (0) | 2023.01.08 |
---|---|
생활코딩 JAVA method - 메소드의 활용 (+수업을 마치며) (0) | 2023.01.07 |
생활코딩 JAVA 입문편 - 나의 앱 만들기 (0) | 2023.01.02 |
생활코딩 JAVA method - 메소드의 입력 / 메소드의 출력 (0) | 2023.01.02 |
생활코딩 JAVA method - 이미 익숙한 메소드 & 메소드의 기본 형식 (0) | 2023.01.02 |