Estoy tratando de llevar un archivo completo de las cadenas, leer, imprimir, a continuación, un par de cosas:

  • La cadena
  • La cadena hacia atrás Y mayúsculas
  • La longitud de la cadena

Hay un par de cosas más, sin embargo ni siquiera he llegado a ese punto y no quiero pedir a nadie a escribir el código completo para mí. Después de jugar con él por un tiempo, lo tengo casi terminado (creo que, salvo en algunas áreas).

La pieza que va de tropiezo en mí es la palabra hacia atrás. Estamos obligados a poner a nuestra salida perfectamente en columnas utilizando prinf, pero no puedo hacer esto, si he leído cada char en un momento. Así que he intentado establecer una String backwardsWord = ""; y la adición de cada personaje.

Esta es la pieza que es de disparo de mí:

for(int i = upperCaseWord.length() - 1; i >= 0; i--)
{
    backwardsWord += (upperCaseWord.charAt(i) + "");
}   

Mi problema es que al imprimir, la primera palabra que funciona correctamente. Sin embargo, cada palabra después de que se agrega a la palabra anterior.

Por ejemplo: si yo soy la impresión de gato, perro, rata y hacia atrás, muestra

TAC

TACGOD

TACGODTAR

Que obviamente quiero leer

TAC

DIOS

TAR

Cualquier ayuda se agradece.

  • ¿Cómo son las cadenas delimitadas en el archivo? Una cadena de texto por línea?
  • Se que inicializar el vaeiable bacKwardsWord cada vez antes de su bucle
  • Usted debe mirar en StringBuilder.reverse() Su voluntad de ser capaz de hacer todas sus revertir fácilmente.
InformationsquelleAutor S12 | 2013-09-25

3 Comentarios

  1. 4

    Parece que la variable backwardsWord es siempre añadiendo un carácter sin que se restablezca entre palabras. La solución más sencilla es clara la backwardsWord justo antes de que el bucle se establece en cadena vacía.

    backwardsWord = ""; //Clear any existing characters from backwardsWord
    
    for(int i = upperCaseWord.length() - 1; i >= 0; i--)
    {
        backwardsWord += (upperCaseWord.charAt(i) + "");
    }


    Si usted está construyendo una Cuerda de un personaje en un tiempo se va a utilizar una gran cantidad de memoria, porque En Java las Cadenas son inmutables.

    Para hacerlo de manera más eficaz el uso de un StringBuilder lugar. Esto es para la construcción de los personajes como lo que está haciendo. Una vez que haya terminado usted puede utilizar el toString método para obtener la Cadena.

    StringBuilder builder = new StringBuilder(); //Creates the String builder for storing the characters
    for(int i = upperCaseWord.length() - 1; i >= 0; i--)
    {
        builder.append(upperCaseWord.charAt(i)); //Append the characters one at a time 
    }
    backwardsWord = builder.toString(); //Store the finished string in your existing variable

    Esto tiene el beneficio añadido de restablecer el backwardsWord cada vez.


    Por último, dado que su objetivo es conseguir que la Cadena en sentido inverso en realidad podemos hacerlo sin un bucle en todos los como se muestra en esta respuesta

    backwardsWord = new StringBuilder(upperCaseWord).reverse().toString()

    Esto crea un nuevo StringBuilder con los personajes de upperCaseWord, invierte los caracteres, a continuación, almacena el final de la cadena en backwardsWord

  2. 3

    Dónde estás declarando la Cadena de backwardsWord?

    Si no claro que entre las palabras, el espacio de memoria asignado para que la cadena seguirá conteniendo el agregado previamente caracteres.

    Asegúrese de que usted está lanzando en un backwardsWord = «»; entre las palabras para restablecer su valor y que debería solucionar el problema.

    Sin ver más de su código de yo no te puedo decir exactamente donde colocarlo.

  3. 1

    Este debe hacer el trabajo ->

    class ReverseWordsInString{
    public static String reverse(String s1){
            int l = s1.length();
            if (l>1)
                    return(s1.substring(l-1) + reverse(s1.substring(0,l-1)));
            else
                    return(s1.substring(0));
      }
    public static void main(String[] args){
            String st = "Cat Dog Rat";
            String r = "";
            for (String word : st.split(" "))
                    r += " "+ reverse(word.toUpperCase());
            System.out.println("Reversed words in the given string: "+r.trim());
      }
    }
    • En este trabajo en «los Miserables»? 🙂 🙂
    • Sí y el resultado es – SEL SELBARÉSIM
    • funcionó como se esperaba..

Dejar respuesta

Please enter your comment!
Please enter your name here