Extract local variable

hanahana·2022년 7월 29일

JAVA 생활코딩

목록 보기
6/8
post-thumbnail
double valueOfSupply=1234.0;
	double vatRate = 0.1;
	double espeseRate=0.3;
	double vat = valueOfSupply*vatRate;
	double totla = valueOfSupply+vat;
	double expense = valueOfSupply*espeseRate;
	double income = valueOfSupply -expense;
	double dividend1 = income*0.5;
	double divideend2 = income*0.3;
	double dividend3 = income*0.2;
	
	System.out.println("Value of supply : "+valueOfSupply);
	System.out.println("VAT : "+vat);
	System.out.println("Totla : "+totla);
	System.out.println("Expencse : "+expense);
	System.out.println("Income : "+income);
	System.out.println("Dividend 1 : "+dividend1);
	System.out.println("Dividend 2 : "+divideend2);
	System.out.println("Dividend 3 : "+dividend3);

출력값

Value of supply : 1234.0
VAT : 123.4
Totla : 1357.4
Expencse : 370.2
Income : 863.8
Dividend 1 : 431.9
Dividend 2 : 259.14
Dividend 3 : 172.76

코드 자체는 특별히 어려울것이 없지만 이번에 중요했던것은 변수를 정의하는 것이다.

이 코드는 중복된 계산값이 계속 나타나는데 그것을 변수로 정의해주면 코드도 간단해지고 입력값을 하나만 변환하면 모든 값이 수정되게 된다.

변수로 정의할 값을 선택한 뒤 오른쪽 키 Refactor-> Extra Local variable 을 누르고 정의하고싶은 이름값을 정하면 모든 값이 정의되어 일괄 변환된다

단축키는 shit + Alt + L

다만 같은 값이 있으면 이 정의한 값이 아닌데도 전부 자동변환되니 그런부분을 유의해서 정의하는것이 좋다.

이 경우 vatRate값과 divideend2에 income에 곱해지는 값이 0.3으로 같은데 divideend2의 0.3도 vatRate로 정의될 가능성이 있으니 일괄변환하면 안된다
일괄변화시 vatRate값이 변경되었을때 divideen2의 값도 변경되어 잘못된값이 출력될것이다

Cmd를 활용한 실행

Value of supply : 1234.0

값을

Value of supply : Double.parseDouble(args[0]);

으로 정의하였다.

Dobble.parseDouble은 String으로 입력된 숫자값을 Dobble로 바꾸는 코드이다

Cmd창을 켜고 파일의 경로를 찾아 이동한뒤 javac (파일이름).java를 실행했다

이제 만들어진 class파일을 실행하기 위해 java (파일이름).java를 입력하고 실행했다

이 경우 오류메세지가 뜨는데 args[0]으로 정의된 입력값이 부재하기 때문이다 이 입력값을 넣어주려먼

java (파일이름).java (입력값*반드시 숫자) 를 실행해주면된다

나는 java MyApp.java 212345를 실행했고 출력값은 아래와 같다

Value of supply : 212345.0
VAT : 21234.5
Totla : 233579.5
Expencse : 63703.5
Income : 148641.5
Dividend 1 : 74320.75
Dividend 2 : 44592.45
Dividend 3 : 29728.300000000003

이전에 배웠던 강의에서는 이런 입력값을 받기위해 Scanner scanner=new Scanner(System.in)을 썼는데 이번 강의에서는 기초부터 cmd를 사용하는 방식으로 나가는것 같다

profile
hello world

0개의 댓글