728x90

두개를 간단히 비교하자면

BufferedReader는 입력값은 buffer를 거쳐 출력해준다,
static이 아니기 때문에 new를 이용해 객체를 생성한 후에 
한 글자가 아닌 여러 문자를 입력받기 위해 readLine()을 사용한다. 이건 엔터를 칠때까지 입력한 값을 받는 메소드이다.

package method;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class InputTest {
	
	public static void main(String[] args) throws IOException {
    
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
		System.out.print("정수 a : ");
		int a = Integer.parseInt(br.readLine()); //문자열을 정수형으로 바꾸는 메소드
		System.out.print("실수 b : ");
		double b = Double.parseDouble(br.readLine());
		
		System.out.println(a+"+"+b+"="+(a+b));
	
	}

}

Integer.paraeInt()를 통해 문자열을 정수로 변환하고
Double.parseDouble();를 통해 문자열을 실수로 변환한다.


문제1

이름(name), 국어(kor), 영어(eng), 수학(math)점수를 입력받아서
 총점(tot),평균(avg)를 구하시오
총점 = 국어 + 영어 + 수학
평균 = 총점 / 과목수

[실행결과]
이름 입력 : 홍길동
국어 입력 : 95
영어 입력 : 90
수학 입력 : 91

*** 홍길동 성적 ***
국어      영어      수학      총점      평균
95         90          91       xxx       xx.xxx

package method;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class SungJuk {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		System.out.print("이름입력 : ");
		String name = br.readLine();
		System.out.print("국어입력 : ");
		int kor = Integer.parseInt(br.readLine());
		System.out.print("영어입력 : ");
		int eng = Integer.parseInt(br.readLine());
		System.out.print("수학입력 : ");
		int math = Integer.parseInt(br.readLine());
		
		int tot = kor+eng+math;
		double avg = (double)tot/3;
		
		System.out.println("\t*** 홍길동 성적 ***");
		System.out.println("국어\t영어\t수학\t총점\t평균");
		System.out.println(kor+"\t"+eng+"\t"+math+"\t"+tot+"\t"+String.format("%.3f", avg));
				
		
		
		
	}

}

BufferedReader의 readLine을 사용한다. 근데 readLine은 String타입인데 입력받는값은 int타입이라서
Integer.parseInt를 사용해 형변환을 해준다.

그리고 소수점을 나타내기 위해 double값인 avg를 String.format을 사용해 string으로 바꾸고 소수점을 나타낸다.


문제2.
월급 계산 프로그램
이름, 직급, 기본급, 수당을 입력하여 세금과 월급을 계산하시오
세율은 급여가 4,000,000 만원 이상이면 3% 아니면 2%로 한다

만약 이 문제를 다 풀었다면
세금은 calcTax()
월급은 calcSalary()를 이용해서 계산하시오

급여 = 기본급 + 수당
세금 = 급여 * 세율
월급 = 급여 - 세금

[실행결과]
이름 입력 : 홍길동
직급 입력 : 부장
기본급 입력 : 4500000
수당 입력 : 200000

   *** 홍길동 월급 명세서 ***
직급 : 부장
기본급      수당      급여   세율   세금   월급
4500000      200000     4700000   3%   xxxxx   xxxxxxx

package method;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
//기본급(basePay), 수당(allowance), 급여(wage), 세율(taxRate), 세금(tax), 월급(salary)

public class Salary {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String name, grade; 
		int wage=0 ,salary=0, basePay=0, allowance=0, tax=0; 
		double taxRate =0;
		
		System.out.print("이름 입력 : ");
		name = br.readLine();
		System.out.print("직급 입력 : ");
		grade = br.readLine();
		System.out.print("기본급 입력 : ");
		basePay = Integer.parseInt(br.readLine());
		System.out.print("수당 입력 : ");
		allowance = Integer.parseInt(br.readLine());
		
		wage = basePay + allowance;
		taxRate = wage >= 4000000 ? 0.03 : 0.02;
		tax = (int) (wage*taxRate);
		salary = wage - tax;
		
		
		System.out.println("\t*** "+name+"월급 명세서 ***");
		System.out.println("직급 : "+grade);
		System.out.println("기본급\t수당\t급여\t세율\t세금\t월급");
		System.out.println(basePay+"\t"
						+allowance+"\t"
						+wage+"\t"
						+(int)(taxRate*100)+"%\t"
						+tax+"\t"
						+salary);


  메소드로 한 방법

package method;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Salary02 {

	public int calcTax(int a, double b) {
		return (int) (a * b);
	}

	public int calcSalary(int a, int b) {
		return a - b;
	}

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		Salary02 salary02 = new Salary02();

		String name, grade;
		int wage = 0, salary = 0, basePay = 0, allowance = 0, tax = 0;
		double taxRate = 0;

		System.out.print("이름 입력 : ");
		name = br.readLine();
		System.out.print("직급 입력 : ");
		grade = br.readLine();
		System.out.print("기본급 입력 : ");
		basePay = Integer.parseInt(br.readLine());
		System.out.print("수당 입력 : ");
		allowance = Integer.parseInt(br.readLine());

		wage = basePay + allowance;
		taxRate = wage >= 4000000 ? 0.03 : 0.02;
		tax = salary02.calcTax(wage, taxRate);
		salary = salary02.calcSalary(wage, tax);

		System.out.println("\t*** " + name + "월급 명세서 ***");
		System.out.println("직급 : " + grade);
		System.out.println("기본급\t수당\t급여\t세율\t세금\t월급");
		System.out.println(basePay + "\t" 
						+ allowance + "\t" 
						+ wage + "\t" 
						+ String.format("%.0f", taxRate * 100) + "%\t" 	
						+ tax + "\t" 
						+ salary);

	}
}

d메소드로 하긴 했는데 static으로 만들지 않았기 때문에 아직 메모리에 객체가 생성되지 않은 상태이다
메인메소드에서 calcTax()와 calcSalary() 메소드를 사용하기 위해 new연산자를 이용해 객체를 생성후 사용한다.


문제3

문제1의 응용 버전으로 if문을 이용해 학점까지 나타낸다.

이름(name),국어(kor),영어(eng),수학(math)점수를 입력받아서 
총점(tot),평균(avg), 학점(grade)을 구하시오

평균이 90이상이면 'A'학점
평균이 80이상이면 'B'학점
평균이 70이상이면 'C'학점
평균이 60이상이면 'D'학점
그외는 'F'학점


[실행결과]
이름 입력 :  홍길동 
국어 입력 : 78  
영어 입력 : 89  
수학 입력 : 100

   *** 홍길동 성적 ***
국어      영어      수학      총점      평균      학점
78         89         100      xxx       xx.xxx       x

package if_Ex;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class SungJuk {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int kor, eng, math;
		String name;
		char grade;
		
		System.out.print("이름 입력 : ");
		name = br.readLine();
		System.out.print("국어 입력 : ");
		kor = Integer.parseInt(br.readLine());
		System.out.print("영어 입력 : ");
		eng = Integer.parseInt(br.readLine());
		System.out.print("수학 입력 : ");
		math = Integer.parseInt(br.readLine());
		
		int sum = kor + eng + math;
		double avg = sum/3.0;
		
		if(avg>=90) {
			grade ='A';
		}else if(avg>=80) {
			grade ='B';
		}else if(avg>=70) {
			grade ='C';
		}else if(avg>=60) {
			grade ='D';
		}else {
			grade = 'F';
		}
		
		System.out.println("[실행결과]");
		System.out.println("\t***"+name+"성적 ***");
		System.out.println("국어\t영어\t수학\t총점\t평균\t학점");
		System.out.println(kor+"\t"
						  +eng+"\t"
						  +math+"\t"
						  +sum+"\t"
						  +String.format("%.3f", avg)+"\t"
						  +grade);

	}

}
728x90

'JAVA' 카테고리의 다른 글

if문 연습03  (0) 2020.09.08
컴퓨터와 가위 바위 보  (0) 2020.09.08
삼항 연산자 연습  (0) 2020.09.04
10진수를 2,8,16진수로 변환하는 법  (0) 2020.09.03
계산기(메소드, switch)  (0) 2020.09.03

+ Recent posts