アルゴリズムの勉強の件#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のソースを連携して見ても、まだ、疎いです。 プログラミングするときにどの程度重要か、ある時に使うかを説明を聞けばいいと思います。