자바에서 계산기를 구현하는 방법

계산기를 구현하는 가장 쉬운 방법은 재귀를 사용하는 것입니다.

통사론:

public float calculate(String input) {
	int pos = input.indexOf('+');
	if (pos != -1) {
    	return calculate(input.substring(0, pos)) + calculate(input.substring(pos + 1));
    } 

코드는 먼저 + 연산자를 추출하고 String의 왼쪽 부분 + String의 오른쪽 부분의 결과를 반환합니다. 동일한 프로세스가 4 개의 피연산자에 대해 사용됩니다. * 및 /는 우선 순위가 + 및 -로 처리되므로 마지막으로 처리해야합니다.

다음 java 파일을 만듭니다.

public class Calculator {

    public float calculate(String input) {

	int pos = input.indexOf('+');
	if (pos != -1) {
	    return calculate(input.substring(0, pos)) + calculate(input.substring(pos + 1));
	} else {
	    pos = input.indexOf('-');
	    if (pos != -1) {
		return calculate(input.substring(0, pos)) - calculate(input.substring(pos + 1));
	    } else {
		pos = input.indexOf('*');
		if (pos != -1) {
		    return calculate(input.substring(0, pos)) * calculate(input.substring(pos + 1));
		} else {
		    pos = input.indexOf('/');
		    if (pos != -1) {
			return calculate(input.substring(0, pos)) / calculate(input.substring(pos + 1));
		    }
		}
	    }
	}

	String toProcess = input.trim();
	if( toProcess == null || toProcess.isEmpty() )
	    return 0;
		    
	return Float.parseFloat(toProcess);
    }

    public static void main(String[] argv) {

	Calculator calculator = new Calculator();

	String input;
	float output;

	input = " 2 + 2 ";
	output = calculator.calculate(input);
	System.out.println(input + " =  " + output);

	input = " 1 + 2 * 3";
	output = calculator.calculate(input);
	System.out.println(input + " =  " + output);

	input = " 1 * 2 + 3";
	output = calculator.calculate(input);
	System.out.println(input + " =  " + output);

	input = " 1 / 2 * 3";
	output = calculator.calculate(input);
	System.out.println(input + " =  " + output);

	input = " 1 + 2 * 3 - 1/2";
	output = calculator.calculate(input);
	System.out.println(input + " =  " + output);

	input = " - 1/2 + 1 + 2 * 3 ";
	output = calculator.calculate(input);
	System.out.println(input + " =  " + output);

	input = "1+2*3+4*5*6+7*8*9*10";
	output = calculator.calculate(input);
	System.out.println(input + " =  " + output); //--> 5167

	input = " 12345678+1";
	output = calculator.calculate(input);
	System.out.println(input + " =  " + output); //--> 12345679
    }

}

출력은 다음과 같습니다.

 2 + 2  =  4.0
 1 + 2 * 3 =  7.0
 1 * 2 + 3 =  5.0
 1 / 2 * 3 =  1.5
 1 + 2 * 3 - 1/2 =  6.5
 - 1/2 + 1 + 2 * 3  =  6.5
1+2*3+4*5*6+7*8*9*10 =  5167.0
 12345678+1 =  1.2345679E7



참고 문헌 :

java.util.concurrent.Executors

java.util.concurrent.CountDownLatch

최근 댓글