BDKK SI Engineer

アルゴリズムの勉強の件#2



アルゴリズムの勉強の件#2

「問題」

今度には計算機プログラムを作りましょう。 添付されたJAVAパイルの中に不足な部分を具現してください。

  • 計算機ソース(コンソール)

Calculator.java

package calProject;

import java.util.Scanner;


/* 문자열 userInput1과 userInput2를 키보드 입력으로 받아 
 * 정수 number1과 number2로 변환한 다음 
 * 사칙연산의 결과를 각각 화면에 출력하는 프로그램을 작성하세요
 */
public class Calculator {
	
	public void cal(double number1, String inputOperator, double number2) {
		if(inputOperator.equals("+"))
		{
			calPlus(number1, number2);
		}
		else if(inputOperator.equals("-"))
		{
			calMinus(number1, number2);
		}
		else if(inputOperator.equals("*"))
		{
			calMulti(number1, number2);
		}
		else if(inputOperator.equals("/") && number2 != 0)
		{
			calDiv(number1, number2);
		    //분모가 0인 경우 어떤 값이 나오는지 체크 = infinity인데 추가 조건절로 분모가 0일 경우 메세지 출력
		}
		else if(inputOperator.equals("%") && number2 != 0){
			calMod(number1, number2);
		}
		else if(inputOperator.equals("/") && number2 == 0 ){
			//나눗셈일 때 분모가 0일 경우 오류 메시지 출력
			System.out.println("0으로는 나눌수 없습니다.");
		}else {
			//% 몫을 구할 때 두번째 수의 0이 들어올 경우 오류 메시지 출력
			System.out.println("정의되지 않은 결과물입니다.");
		}
	}


	public static void  main(String[] args) {
		Scanner scan = new Scanner(System.in);
		Calculator calc = new Calculator();
		double number1 = 0, number2 = 0; //수
		String inputOperator ; //연산자
		boolean isStop = false; //do~while 사용
		
		// input
		do {
		try {
			System.out.print("첫 번째 숫자를 입력하세요 :");
	        String userInput1 = scan.nextLine();
	        number1 = Double.parseDouble(userInput1);
	        System.out.print("두 번째 숫자를 입력하세요 :");
	        String userInput2 = scan.nextLine();
	        number2 = Double.parseDouble(userInput2);
	        isStop = true;
		} catch (NumberFormatException e) {
			System.out.println("입력이 잘못되었습니다. 다시 입력해주세요.");
		}        
		}while(!isStop);
		
		isStop = false;
		
		do {
		System.out.print("연산자를 입력해하세요 :");
        inputOperator = scan.nextLine();
        
        if(inputOperator.equals("+") || inputOperator.equals("-") || 
           inputOperator.equals("*") || inputOperator.equals("/") || inputOperator.equals("%")) {
        	isStop = true;
        }else {
			System.out.println("입력이 잘못되었습니다. 다시 입력해주세요.");
        }
        
		}while(!isStop);
		
		//계산
		calc.cal(number1, inputOperator, number2);
		
	}

	public Object calPlus(double number1, double number2) {
		System.out.println("======================");
        System.out.print(number1);
        System.out.print(" + ");
        System.out.print(number2);
        System.out.print(" = ");
        //output
        System.out.println(number1 + number2);
        return number1 +number2;
	}
	
	public Object calMinus(double number1, double number2) {
		System.out.println("======================");
        System.out.print(number1);
        System.out.print(" - ");
        System.out.print(number2);
        System.out.print(" = ");
		//output
        System.out.println(number1 - number2);
        return  number1 - number2;
	}
	
	public Object calMulti(double number1, double number2) {
		System.out.println("======================");
        System.out.print(number1);
        System.out.print(" * ");
        System.out.print(number2);
        System.out.print(" = ");
     
		//output
        System.out.println(number1 * number2);
        return number1 * number2;
	}
	
	public Object calDiv(double number1, double number2) {
		System.out.println("======================");
        System.out.print(number1);
        System.out.print(" / ");
        System.out.print(number2);
        System.out.print(" = ");
     
		//output
        System.out.println(number1 / number2);
        return number1 / number2;
	}

	
	public Object calMod(double number1, double number2) {
		System.out.println("======================");
        System.out.print(number1);
        System.out.print(" % ");
        System.out.print(number2);
        System.out.print(" = ");
     
		//output
        System.out.println(number1 % number2);
        return number1 % number2;
	}
}

CalculatorTest.java

package calProject;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

public class CalculatorTest {
	@Before
	public void setUp() throws Exception {
		
	}
	
	@Test
	public void test() {
		Calculator cal = new Calculator();
		assertEquals(1.0,cal.calPlus(1,0));
		assertEquals(1.0,cal.calMinus(1,0));
		assertEquals(1.0,cal.calMulti(1,1));
		assertEquals(1.0,cal.calDiv(1,1));
		assertEquals(1.0,cal.calMod(3,1));
	}
}

以上です。

TimeComplexityに関して、勉強をしましたが、まだ、運用について、難しいでした。 そして、異論的な内容を読んでも、JAVAのソースを連携して見ても、まだ、疎いです。 プログラミングするときにどの程度重要か、ある時に使うかを説明を聞けばいいと思います。


Comments

Content