Java - problema con StdIn.readAllStrings()

 
Vista:

problema con StdIn.readAllStrings()

Publicado por Carlos (3 intervenciones) el 14/01/2015 11:56:56
Hola a todos:
Estoy estudiando un programa de ordenación de cadenas, el clásico merge, y tengo un problema con la ejecución del mismo.
El programa lee una serie de cadenas usando esta secuencia:
---------------------------
public static void main(String[] args) {
String[] a = StdIn.readAllStrings();
Merge.sort(a);
show(a);
}
--------------------------
El problema es que, cuando lo ejecuto, no soy capaz de salir de la lectura de las cadenas (el Stdln.readAllStrings). Seguro que es una cosa de lo más tonta, como usar algún carácter para indicar la terminación de la introducción de cadenas, pero no doy con ello.
¿Podría alguien ayudarme?
Muchas gracias,
Carlos, un novato.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

problema con StdIn.readAllStrings()

Publicado por Tom (1831 intervenciones) el 14/01/2015 12:16:45
¿ Qué es Stdin ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema con StdIn.readAllStrings()

Publicado por Carlos (3 intervenciones) el 14/01/2015 12:24:02
Es una clase de Java:
--------------------------------------
Class StdIn

Object
extended by StdIn
public final class StdIn
extends Object
The StdIn class provides static methods for reading strings and numbers from standard input.
---------------------------------------

Saludos,
Carlos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema con StdIn.readAllStrings()

Publicado por Tom (1831 intervenciones) el 15/01/2015 09:19:29
¿ Hecha por tí ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema con StdIn.readAllStrings()

Publicado por Carlos (3 intervenciones) el 15/01/2015 22:31:07
Gracias por preocuparte por el tema.
No, no es mío (qué mas quisiera). Se trata, como dije, de usar un programa ya hecho llamado Merge.java (que puedes ver en http://algs4.cs.princeton.edu/22mergesort/Merge.java.html ).

Creo que ya he visto lo que ocurre:

Para compilarlo uso el propio entorno que ellos usan (se puede descargar en http://drjava.org/ ) y lo que hay que hacer es usar la línea de comandos y compilarlo con un archivo ya que readAllStrings lee cadenas en archivos.
Haciendo java Merge < ejemplo.txt (poniendo en ejemplo.txt una o varias cadenas) funciona perfectamente.
Muchas gracias por tu paciencia ya que me ha permitido mirar de nuevo el problema con otra perspectiva.

Carlos

=========================================================================================
Por si te interesa te adjunto los datos de las librerías que usa.
El programa usa dos librerías creadas por ellos, StdIn y StdOut que se pueden encontrar en http://introcs.cs.princeton.edu/java/stdlib/StdIn.java.html y en http://introcs.cs.princeton.edu/java/stdlib/StdOut.java.html respectivamente.
El el mismo directorio que he puesto Merge.java he colocado StdIn.java y StdOut.java y compilo Merge con Drjava.
He mirado la librería StdIn y readAllStrings es:
-------------------------------
/**
* Reads all remaining tokens from standard input and returns them as an array of strings.
* @return all remaining tokens on standard input, as an array of strings
*/
public static String[] readAllStrings() {
// we could use readAll.trim().split(), but that's not consistent
// because trim() uses characters 0x00..0x20 as whitespace
String[] tokens = WHITESPACE_PATTERN.split(readAll());
if (tokens.length == 0 || tokens[0].length() > 0)
return tokens;

// don't include first token if it is leading whitespace
String[] decapitokens = new String[tokens.length-1];
for (int i = 0; i < tokens.length - 1; i++)
decapitokens[i] = tokens[i+1];
return decapitokens;
}
--------------------------------
==================================================================
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar