Por que a String não tá começando pelo 0? Tá printando a partir do 1, alguém tem alçguma ideia de correção?

// 6. Um método que recebe um texto, uma posição e uma letra e substitui o caractere que esta na
// posição pela letra recebida no parâmetro.

package exerciciosstring;

import java.util.Scanner;

public class EstudarA6 {

    public static String troque(String entrada,int posicao,String letra){
    
        
        
        if(posicao<entrada.length())
    {
       
       letra = entrada.substring(0 ,posicao -1)+letra+entrada.substring(posicao,entrada.length());

    }
    else
    {
        System.out.println("Digite certo!!");
    }

      return letra;
    }


public static void main(String[] args) {

    Scanner leitura = new Scanner(System.in);
    int L;
    String texto;
    String caracter;
     
          
    System.out.println("Digite o texto:");          
    texto = leitura.nextLine();                      
    
    System.out.println("Digite a posição:");
    L = leitura.nextInt();leitura.nextLine();
    
    
    System.out.println("Digite o caracter novo:");
    caracter = leitura.nextLine();
   
    
    String retorno = troque(texto, L, caracter);
    System.out.println("Ficará:"+ retorno);

}
}

Remova esse -1 e teste.

agora ele tá printando o caracter na frente, que no caso seria para trocar pelo da posição digitada…

Manda uma print do que você digitou no console e o resultado.

dei uma mudada:
// 6. Um método que recebe um texto, uma posição e uma letra e substitui o caractere que esta na
// posição pela letra recebida no parâmetro.

package exerciciosstring;

import java.util.Scanner;

public class EstudarA6 {

    public static String troque(String entrada,int posicao,String letra){
    
        
        
        if(posicao<entrada.length())
    {
       
       letra = entrada.substring(0 ,posicao)+letra+entrada.substring(posicao,entrada.length());
       
       
    }
    else
    {
        System.out.println("Digite certo!!");
    }

      return letra;
    }


public static void main(String[] args) {

    Scanner leitura = new Scanner(System.in);
    int L;
    String texto;
    String caracter;
     
          
    System.out.println("Digite o texto:");          
    texto = leitura.nextLine();                      
    
    System.out.println("Digite a posição:");
    L = leitura.nextInt();leitura.nextLine();
    
    System.out.println("Digite o caracter novo:");
    caracter = leitura.nextLine();
   
    
    String retorno = troque(texto, L, caracter);
    System.out.println("Ficará:"+ retorno);

}
}

Tentei dar uma mexida, agora acha a posição, mas apenas não substitui…

Você tentou o que eu sugeri no seu outro tópico? (Já que parece ser exatamente o mesmo exercício)

Faz posicao + 1 e teste.