ERROR: Function to insert word in string

Asked

Viewed 37 times

0

I wrote a function to receive a string, a character and a position .

  /**
    * Funcao para inserir um simbolo em certa posicao valida ENTRE outros
    * em dada cadeia de caracteres.
    * @param a - cadeia de caracteres
    * @param b - character a inserir
    * @param c - posicao de insercao
    * @return cadeia de caracteres com character inserido.
    *
    * Teste:
    *   Para a = "palvra", b = 'A' e c = 3
    *   retorna palAvra
    *
    *   Para a = "algorimos", b = 'T' e c = 6
    *   retorna algoriTmos
    */
  public static String original (String a, char b, int c){

    String nova;
    int tamanho;
    int i;

    if (a == null) {

      nova = ("Erro: string nula.");

    } else {

      tamanho = a.length();

      // e' necessario que a string tenha ao menos duas letras para inserir
      // caracteres entre a cadeia de caracteres
      if (tamanho < 2) {

        nova = ("Erro: tamanho da palavra invalido.");

      } else {

        // para que a posicao seja valida ela precisa estar entre o
        // primeiro e o ultimo caracter da cadeia de caracteres.
        if (c > 0 && c < tamanho) {

          nova = ("Erro: posicao invalida.");

        } else {

          nova = "";

          for (i = 0 ; i < tamanho ; i++) {

            if (i != c) {

              nova = nova + a.charAt(i);

            } else {

              nova = nova + b + a.charAt(i);

            } // fim do if else

          } // fim do for

        } // fim do if else

      } // fim do if else

    } // fim do if else

    return (nova);

  } // fim do original



  /**
    * metodo para testar a funcao original
    */
  public static void teste_01(){

    String n;
    String a;
    char b;
    int c;

    a = IO.readString("\nPalavra: ");
    b = IO.readchar("Caracter: ");
    c = IO.readint("Posicao: ");

    n = original(a, b, c);

    IO.println("\nString: " + n);

  } // fim do teste_01

The function is working ok, except for the fact that it is not returning the error to invalid positions (when I put a position larger or equal to the size of the string), I could not understand why.

1 answer

1


if (c > 0 && c < tamanho) {

      nova = ("Erro: posicao invalida.");

    }

no if above occurs the check of the position is correct , if the position is correct, this code snippet is executed. The problem is that your character insertion code should come in this part, and not

Browser other questions tagged

You are not signed in. Login or sign up in order to post.