2012-04-20 2 views
-1

나는 일식 안드로이드에 약간 문제가있다.반환 후 Eclipse에서 항상 오류를 표시하는 이유는 무엇입니까?

나는 몇 가지 자바 파일이 있지만 반환 후 메서드를 호출하면; (예를 보시오) 그것은 그 방법을 제거하라고 알려준다. 왜? Android 1.6을 사용하고 있습니다.

public void onClick(View paramView) 
{ 
    switch (paramView.getId()) 
{ 
default: 
case 2131296257: 
} 
while (true) 
{ 
    return; 
    fetchAlarmSettings(); <-- It tells me to remove this. 
    if (this.strAlarmOnOff.equals("0")) 
    { 
    this.butAlarmSet.setText("Turn Alarm Off"); 
    this.db.updateSetting("alarmTime", this.strHour.concat(this.strMinute)); 
    this.db.updateSetting("alarmOnOff", "1"); 
    switch (this.cal.compareTo(Calendar.getInstance())) 
    { 
    default: 
    case -1: 
    } 
    while (true) 
    { 
     this.setNotifications.setAlarm(this.cal); 
     break; 
     this.cal.roll(5, 1); 
    } 
    } 
    this.butAlarmSet.setText("Turn Alarm On"); 
    this.db.updateSetting("alarmOnOff", "0"); 
    this.setNotifications.turnAlarmOff(); 
} 
} 

고마워요!

+0

메서드 (및 while 루프 내의 코드 나머지 부분)가 실행되지 않으므로 – ccheneson

+3

이것은 Android 관련 항목이 아닙니다. 기본 자바입니다. – keyser

+0

이 코드는 무엇을하고 있습니까 ??? – Korinna

답변

6

return 문이 실행되는 순간 실행이 중단됩니다. 기본적으로 return 문 다음의 코드는 절대로 실행되지 않으므로 'Unreachable code!'경고가 표시됩니다. return 키워드를 제거하면 문제가 해결됩니다.

기본적으로 이클립스는 결코 실행되지 않을 것이므로 return 다음 줄을 제거하라는 메시지를 표시합니다. 메서드 호출을 제거하면 다음 줄에 무엇이 던져 지는지 불평 할 것입니다.

게다가 내 코드에 결함이 있습니다 ...이 경우에는 while(true) 루프가 중단 조건없이 이상하게 보입니다 (하지만 다시 잘못된 것 같습니다). 또한 default 블록은 일반적으로 일련의 case 문 끝에 표시됩니다. 두 번째 while(true) 루프는 this.setNotifications.setAlarm(this.cal);이 실행되면 루프가 break 문으로 인해 반복을 중지하므로 한 번만 반복됩니다.

+0

경고가 아닙니다. 컴파일 오류입니다. –

+0

이 예제에서 'break'와 같습니다. – maksimov

+0

@BorisStrandjev : 이클립스는 오류로 플래그를 지정해야하지만 컴파일을 시도하면 컴파일이 실패합니다. – npinti

1

Eclipse는 절대 코드를 작성할 수 없으며 실제로 IDE는이를 위해 Java 컴파일러를 사용합니다.

이 경우 해당 분기의 수익 (코드가 if이고 그 이후 코드가 else 인 경우) 아래의 코드에 연결할 수 없어 컴파일 오류가 발생합니다.

+0

'if (true) return; '과 같은 코드는 허용되며 경고 만 표시합니다. – Jave

+0

사실, 반환 후 특정 분기에서 따르는 코드는 허용되지 않습니다. –

1

간단히 대답하면 'return'문 다음에 아무 작업도 수행 할 수 없습니다.

관련 문제