국비지원 JAVA 풀스택 과정/JAVA

[JAVA] 사칙연산 계산기 프로그램

ODaram 2022. 9. 27. 18:17
객체 지향 프로그래밍 : 추상화(=객체 모델링 : 사물을 데이터와 기능으로 분석하여 도출)
데이터 : 실수 2개(피연산자), 연산자(+,-,*,/), 결과값 > 4개
기능 : 사칙연산 > 연산자가 제공 > 연산자에 따라서 분기해야한다. (분기:쪼갠다,나눈다)

사칙 연산 계산기 프로그램

// 두 실수, 연산자 > 변수 3개 : 콘솔뷰에서 입력 받는다.
//연산자는 charAt(0)를 사용하여 문자열에서 첫번째 문자만 얻어온다.
// 사칙연산을 수행하고 결과값을 담는다.
// 결과값 > 변수 한개 1개
// 3,7, + 를 입력했다면 // 출력 ㅣ 3+7 = 10 .
package com.dream.controls;

import java.util.Scanner;

// 사칙연산 계산기 프로그램
public class ControlEx7 {
	public static void main(String[] args) {
    	//변수 선언 단계
		Scanner sc = new Scanner(System.in);	//입력 스트림 객체 생성
		double num1=0, num2=0, result=0;
		char oper = 0;
		String str ="";	//Scanner 클래스는 문자를 얻어오는 메서드를 제공하지 않는다. 따라서 문자열로 얻어온 다음 charAt(index)로 문자 하나를 얻는다.
		
		//1. 두 실수와 연산자를 입력받는다.
		System.out.println("사칙연산 프로그램");
		System.out.print("첫번째 숫자 : ");
		num1 = sc.nextDouble();
		System.out.print("연산자 입력 (+,-,*,/,%) : ");
		str = sc.next();	//nextLine()는 Enter 키 까지 얻어오기 때문에 오류가 발생하므로 next()를 사용한다.
        
        					// 콘솔뷰에서 문자열을 얻어오는 메서드는 nextLine()과 next()이다.
        					// nextLine()은 Enter키까지 얻어온다. 따라서 데이터를 연속으로 받을 때 오류가 발생.
        					//"나는 천재다." .cahrAt(3) > '천'					
		oper = str.charAt(0);
		System.out.print("두번째 숫자 : ");
		num2 = sc.nextDouble();

		
		if(oper == '*') { 문자형과 정수형 모두 기본자료, 기본 자료형의 데데이터는 연산자로 비교 가능 하다. 클래스형은 비교 연산자로 비교할 수 없다.
			result = num1*num2;
		}else if(oper == '/') {
			result = num1/num2;
		}else if (oper == '+') {
			result = num1 + num2;
		}else if(oper == '-') {
			result = num1 - num2;
		}else if(oper == '%') {
			result = num1%num2;
		}else {
			System.out.println("프로그램 종료");
		}
		
		System.out.println(num1+" "+oper+" "+num2+" 는 "+result+" 입니다.");
	}
}
Scanner 클래스는 
문자를 얻어오는 메서드를 제공하지 않는다. 따라서 문자열로 얻어온 다음 charAt(index)로 문자 하나를 얻는다.
char oper = 0;
문자형은 "정수형"이다. A는 숫자로 65이다. 아스키 코드값으로 지정되어있다.