¿Qué tiene de malo indexOf en este código? ¿Por qué obtengo -1 cuando intento imprimir indexOf answer1?

public static void main(String[] args) {
    // write your code here
        ArrayList<String>line1=new ArrayList<String>();
        line1.add("el marg");
        line1.add("ezbt el nakhl");
        line1.add("ain shams");
        line1.add("el matria");
        line1.add("el helmia");
        Scanner s=new Scanner(System.in);
        System.out.println("Entry Station");
        String answer1=s.next();
        Scanner a=new Scanner(System.in);
        System.out.println("Exit Station");
        String answer2=a.next();

        System.out.println(line1.subList(line1.indexOf(answer1),line1.indexOf(answer2)));
    }
}

Quiero imprimir una sublista de la estación de tren que entre la estación de entrada y la estación de salida, pero algo mal me da -1 incluso si el usuario escribió una estación en la lista de arrays

Respuesta 1

Todos los nombres de sus estaciones tienen espacios.

s.next()leerá el siguiente token del Scanner, que no tendrá espacio.

Usar en su s.nextLine()lugar.


Como consejo general para depurar un problema de este tipo, intente ver los valores de answer1y answer2en su depurador (o incluso simplemente imprimirlos). Entonces debería ser muy obvio por qué no coincide.

Respuesta: 2

Utilizo el complemento PMD en mi proyecto Maven para verificar las violaciones y los estándares del código. En Java-8, el PMD se queja del siguiente código como violación potencial de la Ley de Demeter. Arrays.asList (1, 2, 3, 4) .stream () ....

Tengo el siguiente código: ServerSocket ss = new ServerSocket (2351); Socket s = ss.accept (); InputStreamReader in = new InputStreamReader (s.getInputStream ()); escritor = nuevo PrintWriter (s ....

Estoy empezando a usar la interfaz KeyListener. Quiero crear una aplicación de consola muy simple. Me gustaría que el programa imprima "hola" si alguna vez presiono la tecla 'ENTER'. Desafortunadamente, debido a ...

Muy bien, así que estoy tratando de lograr lo que hay en esta imagen: creo que este sería un sistema de coordinación barcéntrica, pero ¿dónde la X siempre es igual a 1? Básicamente, necesito que aumente / disminuya solo cuando me muevo ...