teniendo problemas con matrices y tal vez dividido

String realstring = "&&&.&&&&"; Double value = 555.55555; String[] arraystring = realstring.split("."); String stringvalue = String.valueof(value); String [] valuearrayed = stringvalue.split("."); System.out.println(arraystring[0]); 

Lo siento si se ve mal. Reescrito en mi telefono Sigo recibiendo ArrayIndexOutOfBoundsException: 0 en System.out.println . He mirado y no puedo entenderlo. Gracias por la ayuda.

split() toma una expresión regular como argumento, no como una cadena literal. Tienes que escapar del punto:

 string.split("\\."); 

o

 string.split(Pattern.quote(".")); 

O también podría simplemente usar indexOf('.') Y substring() para obtener las dos partes de su cadena.

Y si el objective es obtener la parte entera de un doble, también podría simplemente usar

 long truncated = (long) doubleValue; 

split usa regex como parámetro y en regex . significa “cualquier carácter excepto separadores de línea”, por lo que puede esperar que "a.bc".split(".") cree una matriz de cadenas vacías como ["","","","",""] . La única razón por la que no está sucediendo es porque (desde javadoc split )

Este método funciona como si invocara el método de división de dos argumentos con la expresión dada y un argumento límite de cero. Por lo tanto, las cadenas vacías finales no se incluyen en la matriz resultante .

por lo tanto, como todas las cadenas están vacías, se obtiene una matriz vacía (y eso se debe a que se ve ArrayIndexOutOfBoundsException ).

Para desactivar el mecanismo de eliminación, tendría que usar la versión split(regex, limit) con limit negativo.

Para dividir en . literal, necesitas escapar de ella con \. (que en Java debe escribirse como "\\." porque \ también es Strings metacharacter) o [.] u otro mecanismo de expresión regular.

Dot (.) Es un carácter especial por lo que necesitas escapar de él.

 String realstring = "&&&.&&&&"; String[] partsOfString = realstring.split("\\."); String part1 = partsOfString[0]; String part2 = partsOfString[1]; System.out.println(part1); 

esto imprimirá el resultado esperado de

&&&

También es útil probar si la cadena dada contiene este carácter. Puedes hacer esto haciendo:

 if (string.contains(".")) { // Split it. } else { throw new IllegalArgumentException("String " + string + " does not contain ."); }