Java: For Loop para insertar asteriscos entre los caracteres de una cadena ingresada por el usuario
Frecuentes
Visto 2,723 veces
-1
Estoy trabajando en una tarea de clase con algunas partes individuales, que he hecho todas con la excepción de esta. Necesito obtener una entrada de cadena del usuario y crear un bucle (preferiblemente un bucle for) que inserte asteriscos entre cada carácter. Estoy completamente perplejo con este, así que si alguien pudiera ayudarme a comenzar, sería apreciado.
se me ha ocurrido esto hasta ahora
} else if (choice.equalsIgnoreCase("C")) {
System.out.print("Enter text here: ");
String orig = input.nextLine();
// To use for asterisk insertion
int x = 1;
int y = 2;
for (int length = orig.length(); length > 0;) {
orig = orig.substring(0,x) + "*" + orig.substring(y);
x = x + 2;
y = y + 2;
}
}
Se compila muy bien, pero cuando lo pruebo e ingreso un texto, aparece una excepción en el subproceso "principal" java.lang.StringIndexOutOfBoundsException: índice de cadena fuera de rango: 5
3 Respuestas
0
No reutilice variables a menos que sea necesario. Solo hace que el código sea más complicado y difícil de leer.
String orig = "my test";
StringBuilder result = new StringBuilder();
for (int i = 0; i < orig.length() -1;i++) {
result.append(orig.charAt(i));
result.append('*');
}
result.append(orig.charAt(orig.length()-1));
Respondido el 29 de Septiembre de 13 a las 22:09
0
Su ciclo for no tiene una cláusula final válida.
for (int length = orig.length(); length > 0;)
se ejecutará indefinidamente hasta que provoque una excepción.
System.out.print("Enter text here: ");
String orig = input.nextLine();
for (int length = orig.length() - 1; length > 0; length--) {
orig = orig.substring(0,length) + "*" + orig.substring(length);
}
produce
Enter text here: TestOutput T*e*s*t*O*u*t*p*u*t
Si desea un * después de la 't' final, puede agregarlo fácilmente eliminando el "- 1" en el bucle for.
Respondido el 29 de Septiembre de 13 a las 23:09
0
pruebe este programa para agregar asteriscos entre cada carácter de la cadena.
int leng;
Scanner sc= new Scanner(System.in);
System.out.println("enter the name");
String name=sc.nextLine();
leng=name.length();
char c[]=new char[leng];
for(int i=0;i<=leng-1;i++){
c[i]=name.charAt(i);
System.out.print(c[i]);
if(i<leng-1)
System.out.print("*");
}
Respondido el 21 de enero de 15 a las 07:01
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas java loops substring outofrangeexception or haz tu propia pregunta.
En lugar de usar una subcadena, sería mucho más fácil, intuitivo y eficiente simplemente recrear una nueva cadena agregando cada carácter de la cadena original seguido de un asterisco (excepto el último) a un StringBuilder. Por supuesto, también puede agregar un asterisco antes de cada carácter excepto el primero. - JB Nizet
El único problema con eso podría ser que aún no hemos aprendido a usar StringBuilder, así que no estoy seguro de si debería usar ese método. Además, la salida del ejemplo coloca el primer asterisco después del primer carácter y el último asterisco después del último carácter. es decir; hi - user2827341
Creo que con el error que estoy recibiendo, solo necesito encontrar una manera de decirle al bucle cuándo dejar de hacer este proceso, ya que va hasta el final y luego se estropea. - user2827341
StringBuilder es una clase como todas las demás clases. Tiene métodos públicos y un javadoc público. Si tu profesor no acepta el hecho de que puedes encontrar una clase y leer su documentación por ti mismo, entonces se pierde toda esperanza. Por supuesto, puede elegir usar solo STring, creando una matriz de caracteres y el constructor String. - JB Nizet
He estado debatiendo el uso de StringBuilder todo el tiempo, ya que buscar cómo insertar caracteres en cadenas me ha llevado a hacerlo muchas veces. Parece mucho más fácil de usar, creo que iré con él. Gracias por el consejo. - user2827341