본문 바로가기
혼자서 개발새발

생활코딩에서 본 코드 Scanner로 입력값 줘보기!! + double을 int로 변환해보기

by 휴일이 2022. 8. 30.

 

학원 들어가기 전(사실 아직 학원도 안 정했지만...)

여러가지 코드를 쳐보면 좋다는 얘길 듣고

아는 오빠한테 "자바의 정석, 기초" 책을 받아서 쳐보고

생활코딩 유튜브도 소개받아서 열심히 보고 있다

 

자바의 정석은 이해하면서 공부해보려고 했으나

"어차피 이해 못 해! 일단 그냥 쳐!" 라는 말에

생각없이 코드를 치고 있다

 

 

 

뭐 어쨌든,

생활코딩에서 앱 만들기 강의가 있어서 코드를 쳐보고 있었다

 

내용은 대충~~~

판매 수익에 부가세를 더하고 동업자들끼리 나누고 하는 일을

앱으로 개발해서 써보는 거였다

 

코드는 이거

public class AcountingApp {

	public static void main(String[] args) {
		
		
		double valueOfSupply = Double.parseDouble(args[0]);
		double vatelate = 0.1;
		double expenseRate = 0.3;
		double vat = valueOfSupply*vatelate;
		double total = valueOfSupply + vat;
		double expense = valueOfSupply*expenseRate;
		double income = valueOfSupply-valueOfSupply*expenseRate;
		double devidend1 = income*0.5;
		double devidend2 = income*0.3;
		double devidend3 = 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 : "+devidend1);
		System.out.println("Dividend 2 : "+devidend2);
		System.out.println("Dividend 3 : "+devidend3);

	}

}

 

그런데 여기서 한 가지 떠오른 게

 

double valueOfSupply = Double.parseDouble(args[0]);

 

이 판매 수익을 앱 사용자가 직접 입력해서 계산할 수 있으면

더 편리하지 않을까? 하는 생각이 들었다

 

자바의 정석 책에서 Scanner 라는 코드를 사용할 때

사용자가 값을 입력할 수 있었던 게 떠올랐음

그래서 자바의 정석 책을 뒤져보고 스캐너로 사용자가 값을 입력할 수 있게 만들어봄

 

하지만...

<오류>

import java.util.Scanner;
public class AcountingApp2 {

	public static void main(String[] args) {
		
		Scanner valueOfSupply = new Scanner(System.in);
		//double valueOfSupply = Double.parseDouble(args[0]);
        System.out.print("판매값을 입력하세요 (예:10000.0) ->")
		double vatelate = 0.1;
		double expenseRate = 0.3;
		double vat = valueOfSupply*vatelate;
		double total = valueOfSupply + vat;
		double expense = valueOfSupply*expenseRate;
		double income = valueOfSupply-valueOfSupply*expenseRate;
		double devidend1 = income*0.5;
		double devidend2 = income*0.3;
		double devidend3 = 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 : "+devidend1);
		System.out.println("Dividend 2 : "+devidend2);
		System.out.println("Dividend 3 : "+devidend3);

	}

}

코드는 오류가 뜨게 된다...

너무 단순하게 생각해서 그런 거 같다

입력값을 받는 코드도 안 썼구..근데 어떻게 쓰는지도 모르겠구..

 

일단 오류가 떴으니 내가 쓴 코드 자체가 안 맞는 거겠지??

그래서 Scanner로 입력값을 Double로 받는 법을 구글에 찾아보았다

 

스캐너로 변수를 지정하고

더블로 입력받을 값을 또 변수로 지정한다음

 

더블변수 = 스캐너변수.nextDouble(); 명령어를 사용하면 되는 거였다!

(next 뒤에는 byte, short, int 등 여러 데이터 타입을 적을 수 있었다)

Thanks Google!

 

그 결과!!!

 

import java.util.Scanner;
public class AcountingApp2 {

	public static void main(String[] args) {
		
		Scanner input = new Scanner(System.in);
		double valueOfSupply;
		System.out.print("판매값을 입력하세요 (예:10000.0) ->");
		valueOfSupply = input.nextDouble();
		double Panmae = ' ';
		double vatelate = 0.1;
		double expenseRate = 0.3;
		double vat = valueOfSupply*vatelate;
		double total = valueOfSupply + vat;
		double expense = valueOfSupply*expenseRate;
		double income = valueOfSupply-valueOfSupply*expenseRate;
		double devidend1 = income*0.5;
		double devidend2 = income*0.3;
		double devidend3 = 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 : "+devidend1);
		System.out.println("Dividend 2 : "+devidend2);
		System.out.println("Dividend 3 : "+devidend3);

	}

}

 

 

성공!!ㅎㅎ

 

 

이런 게 코딩의 맛이구만...ㅎㅎㅎ

여러가지 코드를 쳐보다보니

이런 방법도 있군! 머릿속에 저장하고

그걸 꺼내서 쓰는(구글에서 꺼내긴 했지만) 맛이

달콤하구만 ㅎ_ㅎ

 

 

오빠한테 자랑했더니...

오빠의 새 주문

 

어려운 주문이군...하지만 도전!!!!

 

double을 다 int로 바꿔야하나 싶었지만

값을 출력할 때 int형으로 바꿀 수 있지 않을까??싶었음

구글아 도와조!!

 

import java.util.Scanner;
public class AcountingApp3 {

	public static void main(String[] args) {
		
		Scanner input = new Scanner(System.in);
		double valueOfSupply;
		System.out.print("판매값을 입력하세요 (예:10000.0) ->");
		valueOfSupply = input.nextDouble();
		double vatelate = 0.1;
		double expenseRate = 0.3;
		double vat = valueOfSupply*vatelate;
		double total = valueOfSupply + vat;
		double expense = valueOfSupply*expenseRate;
		double income = valueOfSupply-valueOfSupply*expenseRate;
		double devidend1 = income*0.5;
		double devidend2 = income*0.3;
		double devidend3 = income*0.2;
		
		int valueOfSupply1 = (int)valueOfSupply;
		int vatelate1=(int)vatelate;
		int expenseRate1=(int)expenseRate;
		int vat1=(int)vat;
		int total1=(int)total;
		int expense1=(int)expense;
		int income1=(int)income;
		int devidend10=(int)devidend1;
		int devidend20=(int)devidend2;
		int devidend30=(int)devidend3;
		
		
		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 : "+devidend1+"원");
		System.out.println("Dividend 2 : "+devidend2+"원");
		System.out.println("Dividend 3 : "+devidend3+"원");
		
		

	}

}

일단 이건 실패 ㅠㅠ

그냥 int로 바꾸는 건 아닌가보다...뒤에 .0이 계속 붙어있다

그러면..Math.ceil 을 활용해볼까?하면서

import java.lang.Math;를 불러오고

하나하나 수정하던 중.....

 

띠용???아래 출력값이 수정이 안 되어있던 게 아닌가

이런 실수를 ㅠㅠ

다시 수정해보았다

 

import java.util.Scanner;
public class AcountingApp3 {

	public static void main(String[] args) {
		
		Scanner input = new Scanner(System.in);
		int valueOfSupply;
		System.out.print("판매값을 입력하세요 (예:10000) ->");
		valueOfSupply = input.nextInt();
		double vatelate = 0.1;
		double expenseRate = 0.3;
		double vat = valueOfSupply*vatelate;
		double total = valueOfSupply + vat;
		double expense = valueOfSupply*expenseRate;
		double income = valueOfSupply-valueOfSupply*expenseRate;
		double devidend1 = income*0.5;
		double devidend2 = income*0.3;
		double devidend3 = income*0.2;
		
		
		int vatelate1=(int)vatelate;
		int expenseRate1=(int)expenseRate;
		int vat1=(int)vat;
		int total1=(int)total;
		int expense1=(int)expense;
		int income1=(int)income;
		int devidend10=(int)devidend1;
		int devidend20=(int)devidend2;
		int devidend30=(int)devidend3;
		
		
		System.out.println("Value of supply : "+valueOfSupply+"원");		
		System.out.println("VAT : "+vat1+"원");
		System.out.println("Total : "+total1+"원");
		System.out.println("Expense : "+expense1+"원");
		System.out.println("Income : "+income1+"원");
		System.out.println("Dividend 1 : "+devidend10+"원");
		System.out.println("Dividend 2 : "+devidend20+"원");
		System.out.println("Dividend 3 : "+devidend30+"원");
		
		

	}

}

두구두구두구....결과는??

 

성공 ㅎㅎㅎ

 

뿌듯뿌듯...

오빠가 잘했다고 해줬다 키키

이것이 성취감....??

 

근데 저렇게 하나하나 다 변수 선언 안하고도

더 쉽게 바꾸는 법이 있을 거 같긴 한데 ㅠㅠ 잘 모르겠다

오늘은 일단 여기서 마무리~~~

 

오늘은 자바의 정석 기초2권 코드 치다가 자야게따 ㅎㅎ

 

 

 

생활코딩 선생님~~~저 응용해서 잘 했져?ㅎ_ㅎ

728x90