ERROR: Function to enter word in string

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 that it is not returning the error to invalid positions (when I put a position bigger or equal to the size of the string), I could not understand why.

    
asked by anonymous 12.11.2018 / 18:34

1 answer

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

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

    }

no if above the position check 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, not else else

    
12.11.2018 / 21:18