Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não entendi o porque o valorRecebido, ficou com o mesmo valor de entrada

println("Inicio main") val input: String = "1.9"

val valorRecebido: Double? = try {
    input.toDouble() //Conversão
} catch (e: NumberFormatException) {
    println("Problema na conversão")
    e.printStackTrace()
    null
}
if (valorRecebido != null) {
    println("Valor recebido: $valorRecebido")
} else {
    println("Valor inválido")
}

funcao1()
println("fim main")

}

1 resposta
solução!

Isso acontece pois o valor de cima, o input, é uma String com valor de "1.9".

Na linha de baixo o atributo valorRecebido, vai ter sua atribuicao dentro do try

val valorRecebido: Double? = try {

E dentro do try, teremos um método que transforma String em Double:

 input.toDouble()

O valor que vai ser transformado é do input, que é uma String, com valor de "1.9", que vai ser convertido em Double, com valor de 1.9

Código completo para explicar melhor:

    //valor da String entrada definida como "1.9"
    val entrada:String = "1.9"
    //a definicao do valor recebido dentro do try
    val valorRecebido: Double? = try {
        //vai tentar converter o atributo entrada em Double
        entrada.toDouble()
        //Se tiver a exceção NumberFormatException ele irá fazer:
    } catch (e: NumberFormatException) {
        //mensagem escrita: Erro na conversao
        println("Erro na conversao")
        //mensagem de excecao e localizacao do mesmo
        e.printStackTrace()
        //o valor vai ser atribuido de nulo
        null
    }
    if (valorRecebido != null) {
     //se o valor não for nulo vai imprimir Valor recebido: $valorRecebido
        println("Valor recebido: $valorRecebido")
    } else {
        //se o valor for nulo vai imprimir Valor inválido
        println("Valor inválido")
    }