Java Scanner.nextLine () analiza por error unicode (emoji) como una nueva línea

Más fácil de demostrar con un ejemplo:

    String test = "salut ð\u009F\u0098\u0085 test";
    Scanner scan = new Scanner(test);
    System.out.println("1:" + scan.nextLine());
    System.out.println("2:" + scan.nextLine());

Esta fue una cadena en la entrada del usuario, así que desafortunadamente no estoy 100% seguro de qué es ese Unicode, pero si recuerdo correctamente, era un emoji (vi el mensaje cuando se envió).

El resultado es:

    1:salut ð
    2: test

Mi salida esperada es solo 1 línea (es decir, el código de ejemplo debería dar un NoSuchElementExceptionporque el segundo nextLine()debería fallar). ¿Por qué se analiza como dos líneas? ¿Qué es una posible solución alternativa?

Cuando abro el archivo en un editor de texto, correctamente no trata ese Unicode como una nueva línea.

Respuesta 1

Tengo este código c ++: / * Archivo: ejemplo.cpp * / #include <iostream> #include <time.h> double My_variable = 3.0; int fact (int n) {if (n <= 1) devuelve 1; de lo contrario, devuelve n * fact (n-1); } En t ...

Tenemos la necesidad de vincularnos al mismo puerto local al responder a las solicitudes. A continuación se muestra una muestra de código Java. En Linux podemos vincularnos al mismo puerto dos veces, pero en Windows obtenemos un error en el segundo enlace. ...

Tengo un javax.xml.datatype.Duration que contiene una fracción de milisegundos, por ejemplo, una duración de 1.5ms (1500 microsegundos): Duración duración = DatatypeFactory.newInstance (). NewDuration ("PT0.0015S"); ...

Estoy trabajando con una consulta para traer datos de acuerdo a un momento dado. así que quiero tomar una marca de tiempo y eliminar los últimos 3 dígitos. ¿Es posible? ¿cómo? dame una pista, apreciaré totalmente que