본문 바로가기
Programming 기초/Java

[Java] 나의 앱 만들기 2

by 뭉제 2023. 3. 3.
목차
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

댓글