Java - Metodo que devuelva la posicion del tercer "/" es un String

 
Vista:
Imágen de perfil de Juan Manuel
Val: 8
Ha disminuido su posición en 64 puestos en Java (en relación al último mes)
Gráfica de Java

Metodo que devuelva la posicion del tercer "/" es un String

Publicado por Juan Manuel (5 intervenciones) el 16/04/2020 18:04:19
Hola tenia una consulta con el siguiente metodo que debe devolver la posicion del tercer / de un string

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public String determinarPosicion() {
    int c=0;
    int pos=0;
    for (int i = 0 ; i < this.cadena.length()-1; i++) {
        if(this.cadena.charAt(i) == '/')
            c++;
        if(c==3)
            pos = i;
    }
    if (c < 3)
        return "No pudo identificarse la tercera barra de la cadena";
    else
        return "La tercera barra de la cadena se encuentra en la posicion |" + pos + "|";
}

El string es ingresado por el usuario en el main pero al momento de ejecutar me devuelve un valor raro.
c es un contador de aparicion de forma que al llegar a 3 la variable pos guarde la posicion del indice y al final se devuelva dentro del string pero como dije , no funciona.
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 Juan Manuel
Val: 8
Ha disminuido su posición en 64 puestos en Java (en relación al último mes)
Gráfica de Java

Metodo que devuelva la posicion del tercer "/" es un String

Publicado por Juan Manuel (5 intervenciones) el 16/04/2020 18:42:38
Ya lo arregle, debia usar IndexOf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public String determinarPosicion() {
    int posicion = this.cadena.indexOf("/");
    int c = 0, x=0;
    while (posicion > 0) {
        c++;
        if(c==3)
            x=posicion+1;
        posicion = this.cadena.indexOf("/",posicion+1);
    }
    if (c>=3)
        return "El tercer |/| esta en posicion : "+  x;
    else
        return "Insuficientes | / | en la cadena";
}

Aun asi me llama la atencion que no pudiera obtener la posicion con el metodo que hice antes, si puden ayudarme a enterder el por que se los agradeceria mucho.
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 pablo
Val: 626
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Metodo que devuelva la posicion del tercer "/" es un String

Publicado por pablo (239 intervenciones) el 16/04/2020 18:57:24
Hola juan

Lo que pasa es que en el primer codigo que pasaste tenías era un problema de llaves con el if

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
// one class needs to have a main() method
public class HelloWorld
{
  // arguments are passed using the text field below this editor
  public static void main(String[] args)
  {
    String cadena = "hola / esto es / una / prueba";
 
	int c=0;
	int pos=0;
 
    System.out.println(cadena.length());
 
	for (int i = 0 ; i <cadena.length(); i++) {
      if(cadena.charAt(i) == '/' ){
      System.out.println(cadena.charAt(i));
      c++;
       System.out.println(c);
        if(c == 3){
        	pos = i+1;
          System.out.println("La posicion es " + pos);
        }
        if (c < 3)
		System.out.println("No pudo identificarse la tercera barra de la cadena");
		else
		System.out.println("La tercera barra de la cadena se encuentra en la posicion |" + pos + "|");
      }
 
      }
	}
  }

Fijate el primer if solo tomara la primera línea por ende falla o da error en detectar el tercer slash

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

Metodo que devuelva la posicion del tercer "/" es un String

Publicado por Nucho Gonzalez (53 intervenciones) el 16/04/2020 18:53:44
te dejo el codigo man, pasa el error asi vemos donde te has equivocado
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class devuelveString {
 
	public void devuelveString(String frase) {
		try {
			String frases = frase;
			int contador = 0;
 
			for (int i = 0; i < frases.length(); i++) {
				if (frases.charAt(i) == '/') {
					contador++;
					if (contador == 3) {
						System.out.println("la barra invertida se encuentra en la posicion: " + i);
					}
				}
			}
 
		} catch (Exception e) {
			System.out.println("EL TIPO DE DATO INGRESADO NO ES CORRECTO");
		}
 
	}
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Metodo que devuelva la posicion del tercer "/" es un String

Publicado por Nucho Gonzalez (53 intervenciones) el 16/04/2020 18:57:28
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
package nuevo;
 
public class TercerPosicion {
	public static void main(String[] args) {
		devuelveString devuelve = new devuelveString();
		devuelve.devuelveString("hola");
 
	}
}
 
class devuelveString {
 
	public void devuelveString(String frase) {
		try {
			String frases = frase;
			int contador = 0;
 
			for (int i = 0; i < frases.length(); i++) {
				if (frases.charAt(i) == '/') {
					contador++;
					if (contador == 3) {
						System.out.println("la barra invertida se encuentra en la posicion: " + i);
					}
				}
			}
			if (contador<3) {
				System.out.println("NO EXISTE UNA 3ª BARRA INVERTIDA!");
			}
 
 
		} catch (Exception e) {
			System.out.println("EL TIPO DE DATO INGRESADO NO ES CORRECTO");
		}
 
	}
 
}
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