마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

에디트 텍스트 숫자검사

0 추천
public class EpTextWatcher implements TextWatcher{
			
			Context mContext;
			TextView value;
			public EpTextWatcher(Context context,TextView tv){
				value = tv;
				mContext = context;
			}
			
			@Override
			public void onTextChanged(CharSequence s, int start, int before, int count) {
				// TODO Auto-generated method stub
				if(s.toString().length() > 0){
					Log.d(tag,"2");
					if(Integer.parseInt(s.toString()) > 999){
						Log.d(tag,"3");
						value.setText(null);
						Toast.makeText(getApplicationContext(), "999까지 가능합니다.", Toast.LENGTH_LONG).show();
					}
					}
				
			}
			
			@Override
			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {
				// TODO Auto-generated method stub
				Log.w("onTextChanged", s.toString());				
			}
			
			@Override
			public void afterTextChanged(Editable s) {
				// TODO Auto-generated method stub
				Log.w("onTextChanged", s.toString());				
			}
		}

이런식으로 에디트텍스트 값을 검사하는 코드가 있는데

 

int 형이라 범위를 넓히려고 합니다.

 

그래서

Integer.parseInt(s.toString()) > 999

이 부분을 Long.parseLong(s.toString()) > 999999999999

이런식으로 바꿔주려고 했더니 에러가 뜨는데 int형의 범위를 벗어난다고 합니다. 

long형으로 바꿨는데 왜 int형 범위로 감지하는건가요?

 

브루스웨인 (8,580 포인트) 님이 2014년 9월 24일 질문

1개의 답변

0 추천
컴파일러에게 999999999999 는 int 형으로 인정되기 때문이죠

long 형이라고 알려주려면 아래와 같이 숫자 맨뒷부분에 L 을 적어주셔야 합니다.

999999999999L

float 도 마찬가지구요 F

대문자 소문자는 상관없습니다.
초보개발자ㅠ (33,870 포인트) 님이 2014년 9월 24일 답변
아... 넘 오랜만에 해서 깜빡했네요.. 감사합니다.
...