안녕하세요 지난시간에 이어 계산하는 부분을 추가하는데요.
StringTokenizer 클래스를 사용합니다.
생성을 할때 내용과 딜리미터를 전달합니다.
예를 들어 내용이 A_B_C 딜리미터가 _ 라면
StringTokenizer st = new StringTokenizer( "A_B_C" , "_" );
이렇게 사용하시면 됩니다. 게다가 딜리미터의경우 멀티로도 가능합니다.
예를들면 StringTokenizer("A+B-C/D", "+-/") 이런 식으로 사용이가능하가는 거지요~
while( st.hasMoreTokens() ) { double number = Double.parseDouble(st.nextToken()); numberList.add( number ); Log.d("aaa", String.valueOf(number) ); }
계산기의 기본 아이디어를 설명드리겠습니다.
StringTokenizer로 숫자부분은 얻을수있습니다. 하지만 Operator( +-/* )는 얻을수가 없어요
그래서 숫자, 오퍼레이터는 내용에 추가합니다.
사용자가 1+1/10 이런식으로 입력했다면 TextView에 계속해서 추가해줍니다.
사용자가 오퍼레이터 입력시 operatorList 변수를 만들어 해당 operator를 저장시킵니다.
그리고 계산을 누르게되면 TextView 내용에대해 StringTokenizer를 이용하여 숫자부분만 뽑아냅니다.
그리고 Operator같은 경우는 정상적인 경우라면
만약 사용자가 10+20/30 을 입력했다면 OperatorList 와 NumberList는 아래와 같습니다.
OperatorList는 사용자가 기호를 입력할때마다 add 시켜주면 저렇게 입력이되구요
+입력될때 operatorList 에 입력 / 입력될때 입력이 됩니다.
NumberList는 StringTokenizer 를 이용하여 nextToken으로 값을 뽑아내면 아래와같이 입력됩니다.
|
||||||||||||||||||||||||||||||||||
가. NumberList[0], NumberList[1] 에대해 OperatorList[0]계산 -> 10 , 20 에 대한 + 계산 => 30
나. 가.의 결과 , NumberList[2] 에 대해 OperatorList[1]계산 -> 30 , 30 에 대한 / 계산 => 1
의 형식으로 됩니다.
아래는 Calc 함수내용입니다.
private String calc(String exp) { ArrayList<Double> numberList = new ArrayList<Double>(); StringTokenizer st = new StringTokenizer(exp,"X/+-"); while( st.hasMoreTokens() ) { double number = Double.parseDouble(st.nextToken()); numberList.add( number ); Log.d("aaa", String.valueOf(number) ); } double result = numberList.get(0); Log.d("aaa", String.valueOf(result) ); for( int i = 0 ; i < operatorList.size() ; i++ ) { String operator = operatorList.get(i); if( "*".equals(operator)){ result = ( result * numberList.get(i+1)); }else if( "/".equals(operator)){ result = ( result / numberList.get(i+1)); }else if( "+".equals(operator)){ result = ( result + numberList.get(i+1)); }else if( "-".equals(operator)){ result = ( result - numberList.get(i+1)); } } operatorList.clear(); numberList.clear(); return String.valueOf(result); }
'안드로이드' 카테고리의 다른 글
[안드로이드 강좌 예제 따라하기 7] 슬라이딩 퍼즐 만들기 1 (2) | 2014.11.05 |
---|---|
[안드로이드 강좌 예제 따라하기 6] 커스텀 뷰 및 Bitmap 표시 (0) | 2014.11.04 |
[안드로이드 강좌 예제 따라하기 4] 계산기만들기 - 틀만들기(1/2) (2) | 2014.11.04 |
[안드로이드 강좌 예제 따라하기 3] 액티비티 전환 다른액티비티 실행 (0) | 2014.11.04 |
[안드로이드 강좌 예제 따라하기 2] 기존 프로젝트 불러오기 (0) | 2014.11.04 |