terremoto singapur indonesia hoy bali java android eclipse

java - singapur - Advertencia de código muerto?



terremoto en singapur hoy (4)

En su caso, la siguiente declaración está causando el problema ya que se ejecuta incondicionalmente y siempre se ejecutará cuando se ejecute el bucle for. Por lo que nunca alcanzará para i ++ por lo que su código muerto.

return "";

¿Por qué recibo una advertencia de código muerto en el i ++ en esta función?

InputFilter hexInputFilter() { return new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { for (int i = start; i < end; i++) { if ((source.charAt(i) >= ''0'') && (source.charAt(i) <= ''9'')) { return null; } if ((Character.toUpperCase(source.charAt(i)) >= ''A'') && (Character.toUpperCase(source.charAt(i)) <= ''F'')) { return null; } return ""; } return null; } }; }


Esto se debe a que i++ normalmente se ejecuta después del final del bloque for, y en su función nunca se alcanzará el final del bloque porque en el bloque retorna incondicionalmente un valor.

Un for-loop

for (A; B; C) { D; }

Se traduce internamente en lo siguiente:

A; while (B) { D; C; }

Puede ver que si D siempre regresa de la función, nunca se alcanzará C De eso se trata la queja.


No hay posibilidad de que el for bucle más de una vez porque estás regresando:

return "";

Por lo tanto, i++ no se ejecutará nunca y es por eso que recibe una advertencia de código muerto . Tal vez quieras eliminar esa return ""; y / o ponerlo fuera del for .


Solo ejecutará el bucle una vez debido al return ""; declaración.