Java - Ayuda manipulación de Strings

 
Vista:
sin imagen de perfil

Ayuda manipulación de Strings

Publicado por BadoKhan (3 intervenciones) el 13/06/2015 19:48:01
Buenas. Cómo están??
Soy nuevo en el foro y tenía una consulta.
Tengo que hacer una función que, dada una frase, la devuelve pero con todas las palabras invertidas (no la frase invertida, si no cada palabra individualmente, pero manteniendo su orden). Por ejemplo: "hola como estas" quedaría "aloh omoc satse".

Hice varios intentos pero siempre me tira algún error de que me voy de índice. Paso lo que tengo a ver si me pueden ayudar a salvarlo. Gracias!

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
public class Strings5 {
 
	static int cantidadPalabras(String a){
		int cont=1;
		for(int i=0;i<a.length();i++){
			if(a.charAt(i)==' '){
				cont++;
			}
		}
		return cont;
	}
 
	static int cantidadLetrasPalabra(String a, int indice){
		int cont=0;
		for(int i=indice;i<a.length();i++){
			if(a.charAt(i)!=' '){
				cont++;
			}
			else{
				return cont;
			}
		}
		return a.length();
	}
 
	static String invertirPalabra(String a, int indice, int indiceFinal){
		String b="";
		for(int i=indiceFinal;i>=indice;i--){
			b=b+a.charAt(i);
		}
		return b;
	}
 
	static String invertirFrase(String a){
		String b="";
		int cont=cantidadPalabras(b);
		int indice=0;
		while(cont>0){
			int c=cantidadLetrasPalabra(a, indice);
			b=b+invertirPalabra(a, indice, c);
			indice=c;
			cont--;
		}
		return b;
	}
 
 
	public static void main(String[] args) {
 
		System.out.println(invertirFrase("hola como estas"));
	}
 
}

Por cierto: no se supone que utilice arreglos porque todavía no los vimos en la clase. Gracias :D
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
sin imagen de perfil
Val: 349
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda manipulación de Strings

Publicado por Andrés (340 intervenciones) el 15/06/2015 19:15:58
Puedes usar StringTokenizer?

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
30
31
32
33
34
35
36
37
38
39
40
import java.util.StringTokenizer;
 
/**
 * @author amella
 *
 */
public class ExchangeIndividualWords {
 
 
	public static void main(String[] args) {
 
		String frase = "hola como estas";
 
		final String SPACE = " ";
 
		StringTokenizer st = new StringTokenizer(frase, SPACE);
 
		StringBuilder fraseRev = new StringBuilder();
 
		String token = null;
 
		while(st.hasMoreTokens()) {
 
			token = st.nextToken();
 
			for(int i= token.length()-1;  i > -1 ; i--) {
				fraseRev.append(token.charAt(i));
			}
 
			fraseRev.append(SPACE);
 
		}
 
		fraseRev.deleteCharAt(fraseRev.length()-1);
 
		System.out.print(fraseRev.toString());
 
	}
 
}
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

Ayuda manipulación de Strings

Publicado por BadoKhan (3 intervenciones) el 15/06/2015 19:53:17
Te agradezco el comentario, pero no!
Sólo las cosas "básicas": ciclos, condicionales y, de las funciones asociadas a Strings: charAt y equalsTo :(
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: 349
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda manipulación de Strings

Publicado por Andrés (340 intervenciones) el 15/06/2015 19:58:48
mmm ok deja revisó tus lineas y a ver que encuentro ;)
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

Ayuda manipulación de Strings

Publicado por BadoKhan (3 intervenciones) el 15/06/2015 20:15:29
No te preocupes! Me salió de otra manera:

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public class Strings5 {
 
	static String invertirPalabra(String a, int indiceFinal, int indiceInicial){
		String b="";
		for(int i=indiceFinal;i>=indiceInicial;i--){
			b=b+a.charAt(i);
		}
		return b;
	}
 
	static String invertirFrase(String a){
		String b="";
		int cont=0;
		for(int i=0;i<a.length();i++){
			if(a.charAt(i)==' '){
				b=b+invertirPalabra(a, i-1, cont);
				cont=i;
				b=b+' ';
			}
			if(i==a.length()-1 && a.charAt(a.length()-1)!=' '){
 
				b=b+invertirPalabra(a, i, cont);
			}
		}
		return b;
	}
 
	static String corregirEspacios(String a){
		String b="";
		int cont=0;
		for(int i=0;i<a.length();i++){
			if(a.charAt(i)==' ' && cont<1){
				b=b+a.charAt(i);
				cont++;
			}
			else if(a.charAt(i)!=' '){
				b=b+a.charAt(i);
				cont=0;
			}
		}
		return b;
	}
 
 
	public static void main(String[] args) {
 
		System.out.println(corregirEspacios(invertirFrase("hola como estas")));
	}
 
}

Agradezco la intención. Saludos!!
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

Ayuda manipulación de Strings

Publicado por omar (56 intervenciones) el 16/06/2015 23:57:34
Hola, fijate... probá este código.. suerte!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class InvertirPalabras{
    public static void main(String ar[]){
        String str="Vamos a invertir las palabras de esta frase";
        String fraseInv="";
        String str1="";
        int r=1;
        for (int i=0; i<str.length(); i++){
            char inv=str.charAt(str.length()-r);
            fraseInv+=inv;
            r++;
        }
        for(int i=fraseInv.length()-1; i>=0; i--){
            char actual=fraseInv.charAt(i);
             str1=fraseInv.substring(i,fraseInv.length());
                if(actual==' '){
                    System.out.print(str1);
                    fraseInv=fraseInv.substring(0,(i));
                }if (i==0){System.out.print(" "+str1);
                }
                }
                }
}
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