프로젝트 일지 - 잠깐의 난관(?)

누구나 프로그래밍을 하면서 한번쯤은 난관에 바닥치기 마련입니다.

보통 그런 이유는 두가지로 함축해 볼 수 있겠죠.
안배워서 어렵다 하는 것과 정말 어려운 경우.

대게는 안배워서 어려운게 더 많다고 느껴집니다.
배웠는데 어렵다는 것은 이해의 정도나 노력의 정도에서 문제해결을 찾으면 되는 것이니까요.

뭐 안배워서 어렵다는 것도 마찬가지겟지요 ~

뭐 수다는 이쯤 하고 프로젝트를 하면서 아이쿠 ~ 하면서 고민을 했던 부분에 대해서 좀 이야기 해보고자 합니다.

첫 째로 문자열 비교에 대한 것을 이야기 하고자 합니다.
문자열은 보통 equals()를 이용해서 비교 한다고 하죠.
그런데 같지 않은 경우에 대해서는 어찌 할까? 하는 고민을 하게 됩니다.

equals만 사용을 하자니 소스가 길어지는 것 같고 기분도 찜찜하게 만들기도 하죠.
분명 저는 배운 것 같은데 까먹었는지 따로 찾아보고 답을 해결했습니다.

같지 않은 경우에 대해서 간단하게 소스를 설명해볼게요 ~

"문자열".equals(str)
위에 보이는 문장을 이용하면 같지 않은 경우도 표현이 가능합니다.
어떻게 써먹어!? 하는 말씀을 하는 분이 계실 것 같아서 조금 더 보여드리지요.

"문자열".equals(str) == true 또는 "문자열".equals(str) == false
저렇게 이용을 하면 됩니다. 보통 조건식에 넣는건 다 아실거라 생각을 합니다.

특정 문자열을 String 변수에 들어 있는 문자와 비교를 해서 같으면 참, 틀리면 거짓을 표현해주기 때문에
저렇게 이용을 하면 그 동안 이것을 몰라서 소스가 좀 길어졌다면 줄일 수 있답니다.

그럼 고민거리가 하나 해결 했습니다.

음..이번에는 예외 처리에 대해서 이야기 해 봅시다.
제가 아직 예외처리를 따로 공부를 다 못해서 간단하게만 소개 합니다.

예외 처리라.. 무엇일까요?
간단하게 이야기 하자면 예외처리란
컴파일 과정에서 생기는 에러와 실행 과정에서 생기는 에러를 잡아주기 위해서 사용합니다.
그러나 지금은 컴파일 과정에서 발생하는 에러는 무시 하고 설명하겠습니다.

자바 컴파일러는 컴파일 과정에서 문제가 없으면 class 확장자명을 갖는 파일을 생성하지요 ~
그러나 실행 과정에서 발생하는 문제는 컴파일러는 무시합니다.

그 대표적인 예로 ~
숫자를 입력 받고자 하는데 문자를 입력하면 에러를 발생 시키고 프로그램을 종료 합니다.
그럼 생각을 하겠죠. 어떻게 방법이 없을까? 하는 생각을 하지요~

그럼 일단 에러 메시지를 확인해야 겠죠?
생략... NumberFormatException ... 생략
이런 메시지가 나온답니다. 예외 처리는 Exception 문장을 넣어서 그 문장 안에 것이 실행 하도록 합니다.

그럼 좀전에 입력 포멧이 다른 에러인데 어떻게 할까요?
답은 NumberFormatException 문장을 만들어서 그 내용으로 예외 처리를 하는 문장을 넣어주면 됩니다.
간단하죠?

아직 많이 어렵다 하시는 분은 단순하게 Exception 으로 예외 처리를 만들고 그 안에 내용을 넣어주면 됩니다.
여러가지의 에러라면 문제가 되겠지만 단순히 한가지 문제가 발생한 경우에는 단순하게 해도 처리가 됩니다.

이유는 catch로 한개의 예외 처리를 만들었다면 발생한 에러 중 일치하는 한개의 예외 처리만 해주기 때문입니다.

그럼 간단하게 제가 작성한 예제의 일부분을 보여드리지요.

// 키보드 입력을 받아들이는 메소드(숫자만 받는 메소드 입니다.)
public int getKey(int a){
      try{
           BufferedReader br = new BufferedReader
                    (new InputStreamReader(System.in));
           str = br.readLine();
           i_su = Integer.parseInt(str);
          }catch(Exception e){i_su=0;}    // 예외 처리를 하는 부분. 입력 문자가 포멧이 다른 경우 
                                                        // 이 부분을 실행함으로써 에러를 막아줍니다.

          return i_su;
     }

만약 여러가지 문제가 발생 했다면 공부를 좀더 하시는 편을 추천해드립니다.

모든 프로그래밍의 예제는 결코 본인이 원하는 100%의 답을 내려주지 않으니까요.

원리를 알았다면 논리적으로 ~ 공부합시다.

그럼 오늘은 이만 줄이겠습니다.

캄사합니다 ~

by 만성피로 | 2008/05/24 18:56 | 정리할 자료들 | 트랙백 | 덧글(2)

트랙백 주소 : http://maydaisy.egloos.com/tb/382875
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 김교수 at 2008/05/24 22:51
if("문자열".equals(str) == true) 해도 되지만 if("문자열".equals(str))로 하는 것이 더 좋겠지요? 마찬가지로 "문자열"이 str과 같지 않을 때를 조건으로 하고 싶다면
if("문자열".equals(str) == false) 해도 되지만 if(!"문자열".equals(str))이라고 하는 것이 더 좋겠습니다.

그런데 나름대로 연구하여 방법을 찾아낸 노력과 자세는 참 훌륭합니다.
Commented by 만성피로 at 2008/05/25 07:17
아하하 감사합니다 ^^; 저도 간밤에 잠에 들기 직전에

더 좋은 수가 있다는 것을 늦게 생각이 났습니다 -ㅛ-a;..

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶