Hola.
Estoy confundido con una parte del ejemplo que dan en la entrega
import java.util.Scanner;
public class EntradaDeTeclado1
{
private String entradaTeclado;
public EntradaDeTeclado1 (){
entradaTeclado="";
pedirEntrada();
}
public void pedirEntrada () {
Scanner entradaEscaner = new Scanner (System.in);
entradaTeclado = entradaEscaner.nextLine ();
}
public String getEntrada () { return entradaTeclado; }
public String getPrimeraPalabra(){
for (int i=0;i< entradaTeclado.length()-1;i++) {
if (entradaTeclado.substring (i, i+1).equals(" ") ) {
return entradaTeclado.substring(0, i+1); }
}
return entradaTeclado;
}
public int getLongitud(){
return entradaTeclado.length();
}
}
Es sobre este método específicamente
public String getPrimeraPalabra(){
for (int i=0;i< entradaTeclado.length()-1;i++) {
if (entradaTeclado.substring (i, i+1).equals(" ") ) {
return entradaTeclado.substring(0, i+1); }
}
return entradaTeclado;
}
Hay 2 return. Uno dentro del bucle y otro fuera.
Ahora bien, el segundo return, fuera del bucle, me tendría que devolver el valor del String, cosa que si se cumple la sentencia if no muestra el
String completo, sino que retorno el substring.
Aunque habiendo un return dentro de un bucle, si borro el segundo return me tira error al compilar.
Bueno, por ejemplo, si en una sentencia o un bucle tengo mas de una condición, primero se verifica el que aparece a la izquierda. Si la condición se cumple, se sigue con la siguiente condición y así.
Pero en el momento en que no se cumpla alguna condición no se verifican las otras.
Ahora, esto se aplica al método que cité? Se cumplió una condición que.. "valida" un return (devolver el substring), entonces no se verifica el siguiente (devolver el String)
Cambiando de tema, pero sobre el mismo método, lo probé con valor "hola mundo"
return entradaTeclado.substring(0, i+1); }
con esa línea me devuelve "hola "
le saqué el +1 en el substring
return entradaTeclado.substring(0, i); }
y devuelve "hola".
luego a
for (int i=0;i< entradaTeclado.length()-1;i++) {
le saqué el -1 y no cambia nada el resultado. no se cuál sería su... "propósito"
lo único que se me ocurre con -1 es algo así
for (int i=0;i<= entradaTeclado.length()-1;i++) {
length cuenta desde el 1, mientras que substring o métodos de Character desde el 0, entonces al usar operador <= se tendría que restar 1
comento estas 2 últimas cosas para tratar de entender el por qué está así escrito. aunque compile, un pequeño cambio y tal vez obtengas un bucle infinito, o que haga algo diferente a lo que querías que haga el método.
lo de la primera línea tal vez no sea nada, pero del segundo directamente no lo entiendo. hay algo que se me escapa, o , nose, por eso antes de quemarme la cabeza aprovecho para consultar.
Gracias de antemano