본문 바로가기

BackEnd/Android

for문의 초기변수를 내부에서 사용하는 방법

for(int i=0; i<조건; i++) {}

 

외부에 있는 for문의 변수를 내부에서 사용하려면 int i 변수가 final 이어야 하는데 변수 i가 계속 바뀌어야 하는 특성이 있어서 final이 붙으면 for문의 특성에 부합되지 않습니다.

 

        for(int i = 0; i < btnNumsIds.length; i++) {
            btnNums[i].setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(etNum1.isFocused()) {
                        etNum1.setText(etNum1.getText().toString() + btnNums[i].getText());
                    } else if(etNum2.isFocused()) {
                        etNum2.setText(etNum2.getText().toString() + btnNums[i].getText());
                    }
                }
            });
        }

 

위 코드를 보면 onClick 내부에 btnNums[i]의 i에서 오류가 발생합니다.

for문 초기 변수에 final을 붙여줄 수도 없으니 다른 방법을 사용할 필요가 있습니다.

 

	for(int i = 0; i < btnNumsIds.length; i++) {
            // 반복문 제어변수 값을 대신 저장할 변수 1개 필요
            final int index = i;

            btnNums[i].setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(etNum1.isFocused()) {
                        etNum1.setText(etNum1.getText().toString() + btnNums[index].getText());
                    } else if(etNum2.isFocused()) {
                        etNum2.setText(etNum2.getText().toString() + btnNums[index].getText());
                    }
                }
            });
        }

 

for문 내부에서 final int index에 for문 초기변수 i를 저장해주고 index라는 변수로 내부에서 사용할 수 있습니다.

 

 

 

'BackEnd > Android' 카테고리의 다른 글

고급 위젯 - 날짜/시간 관련  (0) 2020.06.16
그리드 레이아웃으로 계산기 구현하기  (0) 2020.06.16
레이아웃  (0) 2020.06.12
간단한 계산기 구현하기  (0) 2020.06.08
속성 - margin, padding, visibility  (0) 2020.06.07