목차
1. 조건문
2. 배열
3. 반복문
제어문은 프로그램의 실행과정을 조건에 따라 바꾸는 것이다.
자바에는 2가지 제어문이 있다.
1. 조건문
2. 반복문
조건문
문제상황에 새로운 조건이 추가되었다.
수익이 만원을 넘을 때 기존의 배당률대로 수익을 배당하고, 수익이 만원 이하일 때 첫번째 동업자에게만 모든 수익을 배당한다. |
수익이 만원을 넘을 때 사용할 프로그램, 수익이 만원 이하일 때 사용할 프로그램, 총 2개의 프로그램을 만들어야 한다.
이때 조건문을 사용하면 하나의 프로그램으로 모든 문제를 해결할 수 있다.
조건문
· 조건에 따라 실행할 작업의 순서를 제어하는 명령문
· if 문, if-else 문, switch 문
조건문 중 하나인 if-else 문을 사용해 본다.
if-else 문은 if의 조건식이 참인 경우와 거짓인 경우에 각각 실행할 작업을 지시할 수 있다.
[if-else 문의 기본 구조]
if(조건식) {
실행할 코드;
...
} else {
실행할 코드;
...
}
· 조건식: 참(true)과 거짓(false)을 판단하는 문장
- true -> if 문에 속한 코드들을 실행
- false -> else 문에 속한 코드들을 실행
** 실행할 작업이 한 줄이면 중괄호({ }) 생략 가능
public class AccountingIFApp {
public static void main(String[] args) {
double valueOfSuppyly=Double.parseDouble(args[0]); //공급가
double vatRate=0.1;
double expenseRate=0.3;
double vat=valueOfSuppyly*vatRate; //부가가치세
double total=valueOfSuppyly+vat; //판매가
double expense=valueOfSuppyly*expenseRate; //비용
double income=valueOfSuppyly-expense; //수익
double dividend1;
double dividend2;
double dividend3;
if(income>10000) { //수익이 10000원 보다 큰 경우
dividend10=income*0.5; //첫 번째 배당
dividend2=income*0.3; //두 번째 배당
dividend3=income*0.2; //세 번째 배당
} else{ //수익이 10000원보다 적은 경우
dividend1=income*1.0;
dividend2=income*0;
dividend3=income*0;
}
System.out.println("Value of supply: "+valueOfSuppyly);
System.out.println("VAT: "+vat);
System.out.println("Total: "+total);
System.out.println("Expense: "+expense);
System.out.println("Income: "+income);
System.out.println("Divididend 1: "+dividend1);
System.out.println("Divididend 2: "+dividend2);
System.out.println("Divididend 3: "+dividend3);
}
}
실행결과(공급가=5000)
실행결과(공급가=50000)
배열
main 메서드의 매개변수 args는 String 자료를 여러 개 담을 수 있는 문자열 배열이다.
배열(array)
· 같은 데이터 타입을 여러 개 담을 수 있는 객체 -> 자료형의 집합
배당률에 해당하는 부분을 변수로 지정해 본다.
double rate1=0.5;
double rate2=0.3;
double rate3=0.2;
위의 예시는 동업자가 늘어날 때마다 변수를 계속 추가해야 한다.
이때 배열을 사용해 변수를 하나로 묶어서 표현하면 변수를 무한정 늘리지 않아도 된다.
double[] dividendRates=new double[3];
dividendRates[0]=0.5;
dividendRates[1]=0.3;
dividendRates[2]=0.2;
· 데이터 타입 옆에 대괄호([ ])를 붙여서 표현
· 인스턴스를 만들 때 배열의 길이를 지정하여 생성
· 배열 내 데이터는 인덱스를 이용하여 접근(인덱스는 0부터 시작)
public class AccountingArrayApp {
public static void main(String[] args) {
double valueOfSuppyly=Double.parseDouble(args[0]); //공급가
double vatRate=0.1;
double expenseRate=0.3;
double vat=valueOfSuppyly*vatRate; //부가가치세
double total=valueOfSuppyly+vat; //판매가
double expense=valueOfSuppyly*expenseRate; //비용
double income=valueOfSuppyly-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: "+valueOfSuppyly);
System.out.println("VAT: "+vat);
System.out.println("Total: "+total);
System.out.println("Expense: "+expense);
System.out.println("Income: "+income);
System.out.println("Divididend 1: "+dividend1);
System.out.println("Divididend 2: "+dividend2);
System.out.println("Divididend 3: "+dividend3);
}
}
배열을 사용해 각각의 배당률이 서로 연관된 정보라는 것을 분명히 할 수 있고, 변수의 개수도 줄어들게 되었다.
반복문
배열과 반복문을 함께 이용하면 프로그램을 훨씬 간결하게 만들 수 있다.
반복문
· 작업을 반복해서 수행해야 할 때 사용되는 명령문
· for 문, while 문, do-while 문
반복문 중 하나인 while 문을 사용해 본다.
[while 문의 기본 구조]
while(조건식){
실행할 코드;
...
}
· 조건식에 사용되는 변수를 while 문 실행 전에 초기화
· 조건식의 결과가 true인 동안 블록 내의 작업을 반복하고, false가 되면 while 문을 벗어난다.
배열의 길이만큼 반복하여 동업자의 배당금을 계산하는 반복문을 만들어본다.
기존 프로그램에서 동업자에게 배당하는 금액은 수익*배당률로 3번씩 반복하고 있다.
마찬가지로 그 배당금을 출력하는 작업도 3번씩 반복하고 있다.
반복적으로 동작하는 작업을 while 문을 이용해 바꾼다.
int i=0;
while(i<dividendRates.length) {
System.out.println("Divididend "+(i+1)+": "+income*dividendRates[i]);
i=i+1; //i++
}
반복문을 사용하면 동업자가 수백 명으로 늘어난다 해도 언제나 5줄의 코드일 것이다.
public class AccountingArrayLoopApp {
public static void main(String[] args) {
double valueOfSuppyly=Double.parseDouble(args[0]); //공급가
double vatRate=0.1;
double expenseRate=0.3;
double vat=valueOfSuppyly*vatRate; //부가가치세
double total=valueOfSuppyly+vat; //판매가
double expense=valueOfSuppyly*expenseRate; //비용
double income=valueOfSuppyly-expense; //수익
System.out.println("Value of supply: "+valueOfSuppyly);
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("Divididend "+(i+1)+": "+income*dividendRates[i]);
i=i+1; //i++
}
}
}
'Programming 기초 > Java' 카테고리의 다른 글
[Java] boolean 타입과 비교 연산자 (0) | 2023.03.06 |
---|---|
[Java] 나의 앱 만들기 3 (0) | 2023.03.04 |
[Java] 나의 앱 만들기 1 (0) | 2023.03.02 |
[Java] 클래스, 인스턴스, 패키지, 상속 (0) | 2023.02.27 |
[Java] 자바 API (0) | 2023.02.24 |
댓글