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

이클립스 안드로이드 배열에서 중복이 걸러지지않습니다.

0 추천
로또 프로그램을 만들고 있는데 로또 숫자를 입력하는 방법을 editText로 했습니다. 그런데 아래의 배열을 돌려봐도 이상하게 나오네요.

1. 첫번째 칸을 공백으로 했을때 1~45까지 입력하라고 나옴.

2. 두번째 칸만 공백, 초과관련 메세지가 나옴.

3. 전체적으로 거의 모든칸에서 3가지 조건에 대한 메세지가 제대로 나지 않습니다.

예전엔 제대로 돌아갔는데 오늘 이상하게 나오네요.

//번호저장
        bt1.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                int[] number = new int[nums.length];
                //editText 배열
                nums[0]= editText1.getText().toString();
                nums[1]= editText2.getText().toString();
                nums[2]= editText3.getText().toString();
                nums[3]= editText4.getText().toString();
                nums[4]= editText5.getText().toString();
                nums[5]= editText6.getText().toString();
                
                for(int i=0; i<6; i++){
                    if(nums[i].equals("")){//nums[i]가 공백이면 변환이 안되게 해줌.
                        break;
                    }
                    else{                        
                        number[i] = Integer.parseInt(nums[i]);//integer형으로 변환
                    }
                }
                i:for(int i=0;i<6;i++){
                    j:for(int j=0;j<i;j++){
                        if(nums[i].equals("")){//editText 중에 공백이 있을때
                            result2.setText("공백이 있어요");
                            break i;
                        }
                        else if(number[i]<1 || number[i]>45){//editText 중에 1보다 작고 45보다 큰 수가 있을때
                            result2.setText("1에서 45까지 입력하세요");
                            break i;
                        }
                        else if(number[i]==number[j]){//editText 중에 같은 수가 있을때
                            result2.setText("중복입니다");
                            break i;
                        }
                        else{
                            result2.setText("추첨확인을 누르세요!");
                            break i;
                        }
                        
                    }
                }
                
            }
        });

공지사항 읽었습니다.
익명사용자 님이 2015년 10월 27일 질문

2개의 답변

0 추천
 
채택된 답변
코드를 너무 복잡하게 짜셔서 이해하기 어렵네요..

아래와 같이 하시면 되지 않을까 합니다.

for(int i=0;i<6;i++){
    if(nums[i].equals("")){//editText 중에 공백이 있을때
        result2.setText("공백이 있어요");
        return;    
    }

    if(number[i]<1 || number[i]>45){ //editText 중에 1보다 작고 45보다 큰 수가 있을때
        result2.setText("1에서 45까지 입력하세요");
        return;    
    }

    for(int j=0;j<6;j++){
        if(i != j && number[i] == number[j])
        {
           result2.setText("중복입니다");
           return;
        }
    }
}

result2.setText("추첨확인을 누르세요!");
return;
익명사용자 님이 2015년 10월 27일 답변
이것대로 치니까 바로 해결됐어요!!! 감사합니다!!
0 추천
break 쓰시면 반복문 벗어납니다
홍월령 (4,240 포인트) 님이 2015년 10월 27일 답변
...