2012-04-20 20 views
-1

私は日食アンドロイドにいくつかの問題があります。返品後にEclipseがいつもエラーを出すのはなぜですか?

私はいくつかのJavaファイルを持っていますが、返された後にメソッドを呼び出すと、 (例を参照)、メソッドを削除するように指示します。どうして?私は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

これはアンドロイドのものではありません。それは基本的なJavaです。 – keyser

+0

このコードは何ですか? – Korinna

答えて

6

returnステートメントがヒットした瞬間、メソッドの実行が停止します。 return文の後のコードは決して実行されないので、基本的に 'Unreachable code!'という警告が表示されます。 returnキーワードを削除すると問題が解決するはずです。

したがって、Eclipseはreturnの次の行を削除するように指示しているので、決して実行されません。メソッド呼び出しを削除すると、次の行にあなたが投げる行為について不平を言うでしょう。

これ以外にも、コードに瑕疵があります。while(true)この場合、ブレーク条件のないループがあります(しかし、ここでも間違っているかもしれません)。また、defaultブロックは通常一連のcaseステートメントの最後にあります。 2番目のwhile(true)ループは、this.setNotifications.setAlarm(this.cal);が実行されると、breakステートメントによってループが反復処理を停止するため、1回だけ繰り返されます。

+0

警告ではありません。コンパイルエラーです。 –

+0

この例の 'break'と同じです。 – maksimov

+0

@BorisStrandjev:Eclipseはエラーとしてフラグを立てますが、コンパイルを試みてコンパイルすると失敗します。 – npinti

1

Eclipseでは、あなたは絶対コードを書くことができません。実際には、IDEはJavaコンパイラを使用します。

この場合、特定のブランチでの返品以下のコード(ifに戻り、elseのコードの後に​​返すことができることを意味します)は到達できず、コンパイルエラーが発生します。

+0

'if(true)return;'のようなコードは許可されますが、警告だけが生成されます。 – Jave

+0

真実ですが、戻り後に何らかのブランチが続くコードは許可されません。 –

1

簡単な答えは、 'return'ステートメントの後には実行できません。

関連する問題