레이블이 Android인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Android인 게시물을 표시합니다. 모든 게시물 표시

2010. 2. 27.

계산기

Calc.zip

계산기 소스파일


자바와 안드로이드는 처음이라고 봐도 무방할 정도의 실력이므로
가벼운 마음으로 계산기를 만들어봤다.

 
회사를 다니면서 틈틈히 만들다보니 약 3주정도 걸렸는데 구현보다 에러처리하는 부분에서 더 오래 걸렸다.

 
이번 프로젝트를 하면서 오랜만에 헤드퍼스트 자바를 다시 보고 안드로이드 책을 사서 봤기 때문에 정말 많은 공부가 되었다.

 
---------------------





2010. 2. 22.

java BigDecimal 사칙연산

Float이나 Double로 사칙연산을 하는 경우 정확한 값을 얻지 못할 때가 있고,
이는 소수점 이하의 값을 제대로 읽지 못하기 때문이다.

예를 들어 0.2 * 0.4 의 결과가 0.0800000005 이렇게 나오는 경우이다.

이럴때는 BigDecimal을 이용하자.
java.math.BigDecimal 을 import해야한다.

// 예제에서는 String 타입을 인자로 넣었다.
BigDecimal preNum = new BigDecimal("6");
BigDecimal postNum = new BigDecimal("2");

// 곱하기
mutipleResult = preNum.multiply(postNum);
// 나누기, 반올림해서 소수점 둘째자리까지 보여준다.
divideResult = preNum.divide(postNum, 2, BigDecimal.ROUND_UP);
// 더하기
addResult = preNum.add(postNum);
// 빼기
subtractResult = preNum.subtract(postNum);

2010. 2. 15.

사칙연산 정규식(Regular Expression, Java)

안드로이드용 계산기 프로그램을 만들고 있습니다.
허접하지만 어느정도 구현이 되었구요.
계산기 프로그램을 만드는 중에 정규식을 쓸 일이 있었습니다.
정규식을 이용하면서 많은 공부가 되었습니다.


String s = "3+12X9-4/2";

정규식을 이용해서 String에서 숫자와 사칙연산 기호를 분리하려고 합니다.

처음에 썼던 방식은 다음과 같습니다.

String regExp = "[^0-9]";
String[] operands = s.split(regExp);

숫자가 아닌 것들을 구분자로 해서 operands에 3, 12, 9, 4, 2를 넣었습니다.


사실 사칙연산에서 쓰인 '+', '-', 'X', '/' 를 구분자로 하고 싶었는데 '-'가 문제가 되었습니다.

String regExp = "[+-X/]";

위에서 처럼 하면 '-'기호가 문제가 되어 파싱이 안되더군요.

escape 문제인가 싶어서

String regExp = "[+\-X/]";

위의 방법으로 해봤는데 역시나 안되었습니다.

한참을 고민하다가 다른 시도를 해봤는데

String regExp = "[+\\-X/]";
String[] operands = s.split(regExp);
위에 있는 정규식으로 하니 숫자만 파싱이 되더군요.

생각해보니 \\는 \로 인식이 되어서  \\-는 \-로 알아들을테니

'-'기호 문제가 해결되었습니다.

String regExp = "(-|X|/|\\+)";
String regExp = "[-X/+]";

위에서처럼 해도 마찬가지로 파싱이 되었습니다.

============================<결론>=============================
String s = "3+12X9-4/2";
String regExp = "[^0-9]";
String[] operands = s.split(regExp);

위와 같이 하면 숫자만 파싱할 수 있다.
아래와 같은 정규식을 써도 숫자만 파싱할 수 있다.
String regExp = "[+\\-X/]";
String regExp = "(-|X|/|\\+)";
String regExp = "[-X/+]";

2010. 2. 10.

String vs StringBuffer

Java에서 String은 Object로서 넣은 값을 변경할 일이 별로 없는 경우 쓰인다.

즉, 상수로 쓰기 쉽다는 말이고 final을 붙여서 선언을 해도 괜찮다고 생각한다.

 

String c = "STRING"; 를 C에서는 이렇게 표현한다.

char *c = "STRING";

StringBuffer는 값을 변경할 수 있는 문자열을 다룰 때 쓰이는 편이 좋다.


StringBuffer c; 를 C에서는 이렇게 표현할 수 있다.
char c[128];
c[3] = 'I';

2010. 2. 6.

안드로이드 개발환경 세팅(JDK, Eclipse, Android SDK)

1. JDK설치하기

 

http://java.sun.com에 접속한 뒤,

 

Downloads => Java SE => JDK 6 Update 18 (본인이 설치한 버전임.)

 

제어판 => 시스템 => 고급 => 환경변수 =>시스템 변수 에 가서

 

PATH 에 C:\Program Files\Java\jdk1.6.0_18\bin를 추가하고,

 

CLASSPATH에 C:\Program Files\Java\jdk1.6.0_18\lib;.;을 추가한다.

 

.은 현재폴더를 나타낸다. 반드시 추가할 것.

 

환경변수 등록이 정상적으로 되었는지 확인하려면 커맨드창을 띄운다.

 

c:\Documents and Settings\junp>javac -version

javac 1.6.0_18                       => 정상

 

 

2. Eclipse 설치하기

 

http://www.eclipse.org/에 접속한 뒤,

 

Downloads => Eclipse Classic 3.5.1(맨밑)

 

압축을 풀고 원하는 위치로 옮긴다.

ex) D:\eclipse

 

 

3. Android SDK 설치하기

 

http://developer.android.com/sdk/index.html에 가서 OS에 맞게 다운받는다.

 

압축을 풀고 원하는 위치로 옮긴 후, SDK Setup.exe를 실행시킨다.

 

팝업창이 두개 나올텐데 다 끄면 된다.

 

1) Settings => Misc => Force https://...sources to be fetched using http://...

에 체크하고, Save & Apply를 클릭한다.

 

2) Available Packages 메뉴로 가면 버전별 SDK가 나온다.

모두 체크하고 Install Selected를 클릭한다.

(SDK 버전별로 Class 사용범위가 다르기 때문에 다 받아놓고 변경하는게 좋겠다.)

 

3) Choose Packages to Install 창이 나타나면 Accept All 선택하고,

Install Accepted 클릭한다. (설치하는데 40분 이상 필요하다)

 

설치가 완료되면 D:\android-sdk-windows\platforms에 생성이 된다.

 

4) 환경변수 PATH에 D:\android-sdk-windows\tools을 추가한다.

 

 

4. Eclipse에 ADT(Android Development Tools) Plug-in 설정

 

1) eclipse 실행 후 메뉴에서 help > install new software... 클릭한다.

 

2) install 팝업창에서 상단 오른쪽의 Add를 클릭하고, Name 에 Android Plugin 입력하고

    Location에 http://dl-ssl.google.com/android/eclipse 입력 및 OK를 클릭한다.

3) 중간에 설치 리스트 나오는데 모두 선택하고 Next > Next > Accept > Finish를 선택한

    다.

4) 재부팅 후, eclipse를 다시 실행을 하고 file > new > project를 클릭하면 안드로이드 용

   프로젝트를 만들 수 있다.

 

5)  Window > Preferences > Android > SDK Location에서 Browse 클릭하고

     D:\android-sdk-windows를 선택한 뒤 확인을 클릭한다.

 

6) 그리고 Apply를 클릭한 뒤 OK를 클릭한다.

 

 

5. Virtual Device 생성

 

1) D:\android-sdk-windows\SDK Setup.exe를 실행한다.

 

2) Virtual Devices에서 New...를 클릭하고 Name은 '2.1' Target은 'Android 2.1 - API Level 7'을 선택하고 Create AVD를 클릭한다.(Android 버전 선택은 자유이다.)

 

3) 생성된 2.1버전의 AVD를 선택하고 Start... 를 클릭한다. 에뮬레이터가 실행된다.

출발!

2월부터 LG전자 CTO 인턴연구원으로 있게 되었습니다.

 

맡은 일은 안드로이드 개발이구요.

 

입사 전날 몸살 나는 바람에 정신없는 주중을 보냈는데 제대로 쉬질 못하니

 

편도선이 붓고 두통에 잇몸이 부었더군요.

 

우선은 연구원으로 있으면서 많은 글을 올렸으면 하는 바램이 있네요.

 

우선 편도선이 빨리 가라 않았으면 하구요 ^^;;