2014-06-14 6 views
-1

계산기와 비슷한 자바 계산기를 만드는 중입니다. 나는이 상황을 재현하려고 노력하고있다.변수의 데이터 유형 변환

컴퓨터 계산기 :

5/2 = 2.5 * 2 = 5 

그래서 기본적으로 ...

그 작업을 수행하는 방법을
int/int = double * int = int 

? 이 도움이 경우

, 내가 3가 하하 ...

int num_1 = 5; 
int num_2 = 2; 
double ans = (double) num_1/num_2; 

double num_1 = ans; 
int num_2 = 2; 
int ans = num_1*num_2; 

하지만 그래서 난 그 프로그램 어떻게 변수 이름을 다시 선언 할 수 없습니다 : LOL, 내가 그에게 할 수있는 가장 가까운 것입니다 내 프로그램의 변수 :

int currentValue // value displayed when number key is pressed *** eg: 2, 3, etc 
int runningValue // value of running total *** eg: 2 + 2 + (right now a runningValue of 4 is shown on the computer calculator) 
int finalValue // value given when the equal sign is pressed 5 + 5 = 10 

도움?

+3

경우, C 또는 C++ 태그를 추가하지 마십시오. –

+0

변수를 다시 선언하는 이유는 변수에 값을 할당하기 만하면됩니다. –

답변

1

계산기는 부동 소수점을 사용하기 때문에 모든 경우에 double을 사용하는 것이 가장 간단합니다.

임의의 정밀도를 원할 경우 Java에 있으면 BigDecimal을 사용할 수 있습니다.

0

사용자 입력에서 오는 대수 표현식을 평가하려면 The Shunting-Yard AlgorithmStack 추상 데이터 형식을 공부하는 것이 좋습니다. 표현식은 C 또는 Java 구문으로 직접 변환되지 않지만 문자열이나 텍스트 스트림으로 입력됩니다. 그런 다음 스택과 알고리즘을 사용하여 모든 것에 대해 "변수"를 만들지 않고 표현식을 평가합니다. 최상위 레벨에서 필요한 변수는 두 개의 스택과 입력 표현식뿐입니다.

그리고 merlin2011에 따르면 모든 유형 분석을 건너 뛸 수 있습니다. 이런 유형의 애플리케이션에는 잔인합니다. 모든 중간체와 결과에 대해 일관된 유형을 사용하십시오.

영감을 얻으려면 this question에 대한 답변을 살펴보십시오. 또한 an evaluator in Java that은 스택 데이터 형식을 할당하는 대신 중간 결과를 호출 스택에 저장하기 위해 재귀를 사용합니다. (내 대답은 무시하고 다른 질문과는 완전히 다릅니다.)

1

데이터 유형을 변환하지 마십시오. luser droog의 대답을보십시오. 거기에 제안 된 알고리즘을 사용하십시오. 그런 다음 사용자 입력을 계속 가져 와서 평가를 계속하십시오 (중간 중간 결과 변수로 말하기). 마지막으로, 소수점 뒤에 숫자가 있는지 여부에 따라 현명한 방법으로 이중 중간 결과 변수의 값을 형식화하십시오 (현재 최종 결과입니다).

또한보십시오 : 귀하의 질문은 자바에 관한

DecimalFormat