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

2012년 5월 3일 목요일

[java] 실수에서 정수로 변환

간단하게 실수를 정수로변환하는 메소드를 만들었다.

소수점 자리수를 지정하여 해당 수의 내림, 반올림, 올림 처리를 해주도록 했다.


/**
* 실수 -> 정수 변환시 자릿수 처리
* 
* @param decimal     부동소수
* @param loc         자릿수 제한 위치. 2자리까지 보이면 2 , 3자리까지면 3 이런식으로 지정
* @param mode        1 내림 , 2 반올림 , 3 올림
* @return 변환 후 정수
*/
public static int decimalCalc(float decimal , int loc , int mode) {

BigDecimal bd = new BigDecimal(decimal);
BigDecimal result = null;

if(mode == 1) {
result = bd.setScale(loc, BigDecimal.ROUND_DOWN); //내림
} else if(mode == 2) {
result = bd.setScale(loc, BigDecimal.ROUND_HALF_UP); //반올림
} else if(mode == 3) {
result = bd.setScale(loc, BigDecimal.ROUND_UP); //올림
}

return result.intValue();
}

2012년 5월 2일 수요일

[java] 숫자 판별 (전화번호)


프로젝트중에 랜덤으로 받는 데이터들을 webview로 만든 화면에 보여주는 중에
전화번호인 녀석들은 선택했을때 발신 처리를 해야 했다.
삼성에서 만든 갠역시류의 디바이스는 요처리를 자동으로 해주는 통에 신경안쓰고 있었다가,
다른 아이들이 무반응이길래 후다닥... (근데 저 녀석들은 모든 숫자에 다 발신처리를 해준다.
발신할수 없는 숫자 길이여도;)

뭐 안드로이드 웹뷰에서 발신 처리 하는거야 해당 문자를 <a> 태그를 이용해서
지정 url에 tel:전화번호 라고 쓰고 해당 웹뷰의 WebViewClient 에서 shouldOverrideUrlLoading를 오버라이드 해서 받은 url을 발신처리해주면 그만이다.
예) <a href="tel:010*******">010********</a> 뭐 이런 형태!

그런데 요녀석이 전화번호인지 아닌지를 판별하기 위해서 간단한 메소드를 만들었다.
본인은 8자리 미만의 숫자는 발신처리 하지 않도록 하기 위해서 해당 분기문을 넣었지만,
숫자 판별만 필요한 사람이라면 이 분기문을 빼고 사용하면 된다.

     /**
      * 전화번호 판별
      *  : 0~9이외의 문자일 경우 false 반환
      *  : 자리수가 8자리 미만의경우 false 반환
      */
     public boolean isTelNumber(String number) {
         boolean numFlag = true;
         // 널체크
         if (isEmpty(number))
             return false;

         int size = number.length();
         // 자리수 판별
         if (size < 8) {
             numFlag = false;
         } else {
             // 숫자 판별 : 0~9 이외의 문자는 false
             for (int i=0 ; i<size ; ++i) {
                 if (!(48 <= (int)number.charAt(i) && 57 >= (int)number.charAt(i))) {
                     numFlag = false;
                     break;
                 }
         }
       
         return numFlag;
     }


위에서 사용한 isEmpty 메소드도 널체크를 위해 내가 만들어 놓은 녀석
심플하니 여기저기 많이 불리고 있다규!!
    /**
     * 공문자 체크
     */
    public static boolean isEmpty(String str) {
        return (str == null || str.equals("")) ? true : false;
    }

[java] 현재 날짜/시간 정보 취득

현재시간 정보를 가지고 파일명을 만들어야 해서 static 메소드로 만들어 놨다.

리턴 받고싶은 타입을 인자로 넘겨주면 땡~~

개인적으론 두번째 메소드 사용을 권고한다!! ^___^ 으훗~
첫번째 아이는 그냥 Calendar 클래스를 써보고 싶었을뿐 +_+


     /**
      * 현재시간 yyyyMMddHHmmss 타입으로 변환
      */
     public static String currentDatetimeString() {
         Calendar cal = Calendar.getInstance();
       
         StringBuffer buf = new StringBuffer();
         buf.append(String.format("%04d%02d%02d"
                         , cal.get(Calendar.YEAR)
                         , cal.get(Calendar.MONTH) + 1
                         , cal.get(Calendar.DAY_OF_MONTH)));
         buf.append(String.format("%02d%02d%02d"
                         , cal.get(Calendar.HOUR_OF_DAY)
                         , cal.get(Calendar.MINUTE)
                         , cal.get(Calendar.SECOND)));

         return buf.toString();
     }

     /**
      * 현재시간 받은타입으로 변환
      *  - yyyyMMdd
      *  - yy/MM/dd
      *  - yyyyMMddHHmmss
      */
     public static String currentSimpleDateFormat(String formatStr) {
         SimpleDateFormat format = new SimpleDateFormat(formatStr);
         return format.format(new Date());
     }

예를 들면 오늘 날짜 2012년5월3일 데이터로 뽑고 싶다면
currentSimpleDateFormat("yyyy년M월d일") 라고 호출하면 된다.

참고)
     년도 : yyyy, yy
     월    : MM, M
     일    : dd, d
     시    : HH
     분    : mm
     초    : ss