Java - Concatenar frases

 
Vista:
sin imagen de perfil
Val: 10
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Concatenar frases

Publicado por Alejandro (3 intervenciones) el 18/09/2020 12:53:48
tengo que hacer este programa y no se como hacerlo
Haz un programa que introduzca frases por teclado hasta encontrar una que esté vacía
y que componga una frase nueva con la primera palabra de cada una de las frases
introducidas.
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Concatenar frases

Publicado por Kabuto (1381 intervenciones) el 18/09/2020 13:37:56
Empieza tú un código, una versión reducida de lo que se pide sobre la cuál ayudarte a completarlo.

Por ejemplo, haz simplemente que el programa tenga un bucle que pida frases por teclado y se repita hasta que el usuario introduzca una frase vacía.
Solo eso, no te preocupes de hacer nada con esas frases.
Solo pedir Strings al usuario hasta que introduzca una vacía.

Inténtalo, te funcione o no, publica aquí lo que hayas conseguido y sobre eso iremos avanzando.
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
sin imagen de perfil
Val: 10
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Concatenar frases

Publicado por Alejandro (3 intervenciones) el 18/09/2020 17:23:34
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
*/
    public static void main(String args[]) {
 
         Scanner sc = new Scanner (System.in);
 
         do
         {
             System.out.println("Introduzca una Frase");
             String cadena = sc.nextLine();
         }
         while {
         if ( (cadena == null) || (cadena.equals("")) )
             }
    }
}
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Concatenar frases

Publicado por Kabuto (1381 intervenciones) el 18/09/2020 21:07:05
Eso es.
Si intentas compilar ese código verás que no funciona debido a errores de sintaxis.
Pero bueno, lo importante es intentar comenzar el código y sintaxis a parte, la lógica si es bastante correcta.

No compila porque el WHILE no funciona de esa manera, no se puede combinar con un IF.

Y otra cosa a corregir sería que la variable String cadena hay que declarar antes de que comience el bucle.
Si la declaras dentro del bucle, fuera de él dicha variable "no existe". Solo es accesible DENTRO del bucle y ni siquiera vas a poder acceder a ella para establecer la condición del WHILE.
Así que hay que declararla fuera.

Tu código, corregido, podría quedar de la siguiente manera.
Fíjate que la clase String ya nos da un método para determinar si un objeto String está vacío o no.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Concatenar {
 
	public static void main(String[] args) {
		Scanner sc = new Scanner (System.in);
		String cadena = "";
 
		do
		{
			System.out.println("Introduzca una Frase");
			cadena = sc.nextLine();
		}
		while(!cadena.isEmpty());
 
		System.out.println("\n\tFIN DE PROGRAMA");
		sc.close();
	}
 
}

Si ejecutas ese código, verás que compila y que hace lo que nos habíamos propuesto: pedir frases hasta introducir una vacía, es decir, pulsar INTRO sin escribir nada.

Primer objetivo cumplido. Ahora habría que conseguir:
- Extraer primera palabra de cada frase
- Concatenar cada una de estas primeras palabras para construir una frase con ellas

Bien, puesto hay que construir una frase, ya podemos intuir que vamos a necesitar una nueva variable, un String llamado por ejemplo frase, que será donde concatenaremos las primeras palabras de cada frase introducida.

Pero, ¿y como obtener la primera palabra de cada frase introducida?
Hay varias maneras, una que quizás se entiende fácil y además sirve para conocer mejor los métodos de la clase String que supongo es la intención de este ejercicio, es la siguiente.

Un String es una secuencia de caracteres y cada carácter está numerado con un índice, empezando desde el 0 en adelante.
Para determinar hasta donde llegan los caracteres de la primera palabra, habría que buscar cuál índice tiene el primer espacio en blanco de la frase.
Para obtener este índice, podemos usar el método indexOf() y entre paréntesis le decimos que busque un espacio en blanco --> " "
Ese indice lo guardamos en una variable int.
Una vez lo tenemos, podemos usar el método subString() para extraer del String cadena, la parte que nos interesa y guardarla en otro String.
Al método subString() entre paréntesis le indicaremos dos valores int, el primero es el indice por el que ha de empezar la extracción de la subcadena (la primera palabra), que en este caso sería el 0. El segundo es el indice donde debe terminar la extracción, que es el indice que nos ha dado el método indexOf().

Con eso ya tenemos la primera palabra y podemos concatenarla ya en el String frase, añadiendo un espacio en blanco para que las palabras queden separadas unas de otras.

El bucle repite este proceso hasta que se introduzca una cadena vacía. Precisamente por esto, antes de intentar extraer la primera palabra, preguntaremos si el usuario ha introducido una cadena vacía. Si esta vacía no hacemos nada porque el proceso ha llegado a su fin.
Si NO esta vacía, será entonces cuando buscaremos la primera palabra.

Bien, si has entendido la lógica de este proceso, puedes intentar por tu cuenta añadir el código que falta.
En cualquier caso, te dejo el código que yo he usado para solucionarlo. Tu decides si intentarlo primero o no.

Sin embargo, el código que dejo a continuación no es perfecto. Funciona bien mientras se estén introduciendo frases de 2 palabras o más.
Pero si se introduce una frase de una sola palabra, el código falla y se produce una excepción.

Luego miraremos como evitar esto, pero primero, asegúrate de que entiendes el funcionamiento de la solución que hemos propuesto y también a ver si puedes deducir por qué motivo falla si la frase solo tiene una palabra.
Cuando todo esto esté claro, veremos como solucionarlo. No dudes en preguntar lo que haga falta.
Un saludo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class Concatenar {
 
	public static void main(String[] args) {
		Scanner sc = new Scanner (System.in);
		String cadena = "";
		String frase = ""; //Aquí concatenamos primera palabra de cada frase
 
		do
		{
			System.out.println("Introduzca una Frase");
			cadena = sc.nextLine();
			if (!cadena.isEmpty()) {
				//Buscamos indice del primer espacio en blanco
				int indicePrimeraPalabra = cadena.indexOf(" ");
				//Con ese indice, ya sabemos donde empieza y acaba la primera palabra
				String primeraPalabra = cadena.substring(0, indicePrimeraPalabra);
				//Tenemos primera palabra, la concatenamos para construir una frase
				frase = frase + primeraPalabra + " ";
			}
		}
		while(!cadena.isEmpty());
 
		System.out.println("Frase compuesta:\n" + frase);
 
		System.out.println("\n\tFIN DE PROGRAMA");
		sc.close();
	}
 
}
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
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Concatenar frases

Publicado por Rodrigo (623 intervenciones) el 19/09/2020 16:49:41
Parece que habria problemas si las frases que se ingresan solo tienen 1 palabra (o sea, no hay espacios en blanco en ellas).
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Concatenar frases

Publicado por Kabuto (1381 intervenciones) el 19/09/2020 22:29:21
Sí, lo comento en mi mensaje.

Pero antes de corregir ese problema me gustaría que Alejandro entienda el programa que he escrito, y que además sepa entender por qué falla al meter una frase de una sola palabra, es decir, sin espacios.

Una vez entendido, propondríamos soluciones.
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