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

if else 구문 질문이요!!

0 추천
안녕하세요 학원에서 자바를 처음 접하고 공부하고있는데요..

웹에서 음악정보들을 받아와 앱에서 스트리밍으로 실행시키는 코드입니다.

코드의 일부분입니다.

음악리스트에는 2곡의 음악이 있고, (ListView)

총 음악url를 저장할 변수 2개 ( 중복으로 실행되는거를 방지하기위해 만들었습니다. e_url, url)

설명을 하자면,

처음 음악 실행을 누르면, e_url 의 현재 url 를 저장한후, 각 url 를 비교하여

같은음악의 곡이면 mediaPlayer의 객체를 null 로 만들고 재생성 하는것을 이용해서

중복으로 실행되는것을 막고, 선택한 음악이 나오게 구현하였습니다.

( 리스트를 터치할수록 돌림노래같이 나오더라구요..)

  public void musicPlay(String url){

        if(e_url.compareTo(url)!=0) {
            e_url = url;
            if (mediaPlayer == null) {
                mediaPlayer = new MediaPlayer();
            } else {
                mediaPlayer.stop();
                mediaPlayer = new MediaPlayer();
            }
        }else if(e_url.compareTo(url)==0){
            Log.d("test","같은노래야");
            mediaPlayer.stop();
            mediaPlayer = null;
            e_url = "e_url";
        }
        try{

            if(mediaPlayer!=null) {
                mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                mediaPlayer.setDataSource(e_url);
                mediaPlayer.prepare(); // might take long! (for buffering, etc)
                mediaPlayer.start();
            }

        }catch(Exception e){
            e.printStackTrace();
        }
    }

여기서 질문입니다

처음에 else if 구문을 else 구문으로 하여 구현하였는데 else 부분을 아예 타지를 않았습니다.

한동안고민하다가 else if 문으로 아예 정해놓으니까 정상적으로 타더라구요..

( compareTo(String args) 해당문자열이 args 와 같은 문자열이면 0을 리턴합니다. )

이유를 좀 알수있을까요??ㅠㅠ 두가지 조건뿐만 아니라 다른 조건들이 있어서 안되는거였나요??

고수님들 답변부탁드립니다!!
익명사용자 님이 2016년 4월 24일 질문

2개의 답변

0 추천
상식적으로 if else 문을 썼을때 두 개 모두 해당하지 않는 것은 불가능하다고 생각합니다.

if / else 전후로 로그를 찍으셔서 어느 경로를 타는지 정확하게 판단 해야 한다고 생각합니다.

또 if 문 안의 조건문도 로그를 통해 정확히 어떤 값을 반환하는지 알아야 문제 해결하는데 도움이 될 거 같습니다.
creater (2,330 포인트) 님이 2016년 4월 25일 답변
0 추천

위에분 말씀대로 if else 문으로 구현하였을 경우 else 부분으로 타지 않았을경우는 if 조건이 성립 되어서 그런것 같습니다.

if else 문의 조건이 약간 문제가 있어 보이네요 compareTo 함수를 바꿔 보시는게 좋을듯 하네요

예를 들어 equals 비교 같은...

 

익명사용자 님이 2016년 4월 25일 답변
...