Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Maximiliano Burgos
Maximiliano Burgos

Posted on

     

Curso Kotlin | #7. Entrada de datos

Bienvenido/a a otro capítulo del Curso de Kotlin! Podés consultar el curso completo desdeeste link que te dejo acá. Podés seguirme porLinkedIn oTwitter si querés estar al tanto de las próximas publicaciones.

Entrada de datos con el método readline

Ahora que ya vimos como definir una variable y los distintos tipos de datos que existen, tenemos todo lo necesario para enviar información escrita a nuestra consola.

Para ello utilizaremos un método llamado readline, de la siguiente manera:

print("Como es tu nombre? > ")valname=readLine()println("Tu nombre es $name")
Enter fullscreen modeExit fullscreen mode

Noten que usé print en la primer linea, y no println. Esto es porque queremos que la entrada de datos se posicione al lado de nuestro texto.

Luego si usamos println para que haga un salto de linea con el resultado.

Cuando ejecutemos el programa, nos pedirá nuestro nombre y lo escribiremos (el texto en verde), y luego daremos enter, recibiendo la salida “Tu nombre es Tom” y el aviso de que nuestro programa ha terminado.

Output

Ahora bien, ¿qué devuelve el método readLine? Si miramos su definición (Control + Click en Windows):

publicfunreadLine():kotlin.String?{/* compiled code */}
Enter fullscreen modeExit fullscreen mode

Podemos observar que se trata de un nullable String. En el próximo capítulo trataremos el tema de nullables en detalle.

Lo importante en este caso es que se trata de un tipo de dato que ya manejamos un poco en profundidad.

Hay otros métodos interesantes en el tipo String que podemos utilizar, por ejemplo si queremos que todo el texto quede en mayusculas, usaríamos toUpperCase:

println("Tu nombre es ${name?.toUpperCase()}")#output:TunombreesTOM
Enter fullscreen modeExit fullscreen mode

Y si necesitamos minúsculas, podemos utilizar toLowerCase:

println("Tu nombre es ${name?.toLowerCase()}")#output:Tunombreestom
Enter fullscreen modeExit fullscreen mode

El “?” al lado de name es necesario porque se trata de una nullable variable. Paciencia, ya lo veremos en el próximo capítulo.

Estos últimos dos métodos son propios de la clase String. Haciendo un repaso de la clase anterior, podemos decir que a su vez es un CharSequence, por lo cual podemos aplicarle un filtro.

Imaginemos que en el nombre introducimos dígitos, lo cual es incorrecto. Queremos limpiar ese input:

print("Como es tu nombre? > ")valname=readLine()valnameSanitized=name?.filter{it.isDigit().not()}println("Tu nombre es $nameSanitized")
Enter fullscreen modeExit fullscreen mode

Creamos una variable nameSanitized que recibirá el resultado del filtro isDigit, con una adición de la función not, la cual permitirá evaluar una negación.

En pocas palabras, le decimos algo como: Quiero todos los caracteres que sean isDigit igual a false. O sea, que no sean dígitos. Si corremos el programa:

Comoestunombre?>Max234TunombreesMax
Enter fullscreen modeExit fullscreen mode

Podemos observar que quitó todos los números.

Ahora bien: Sabemos que readLine devuelve un String, asi que podemos ahorrarnos una linea:

valname=readLine()?.filter{it.isDigit().not()}println("Tu nombre es $name")
Enter fullscreen modeExit fullscreen mode

De esta manera podemos encadenar métodos y el código queda mucho más limpio. Incluso si quisiéramos aplicar minúsculas luego del filtro, podemos seguir concatenando métodos:

valname=readLine()?.filter{it.isDigit().not()}?.toLowerCase()
Enter fullscreen modeExit fullscreen mode

Esto va a funcionar siempre y cuando el valor retornado por cada método sea compatible con el siguiente.

Conclusiones

Esta fue una clase corta, pero atómica. Ver como funciona la lectura de la entrada de datos conjunto de nuestro conocimiento previo en strings, nos ayuda a ver el panorama completo.

Espero que puedan aplicar todos estos conocimientos a su día a día.

¡Los espero en la siguiente clase!

Top comments(0)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

"Escribo estas palabras en acero, pues todo lo que no esté grabado en metal es indigno de confianza" - Nacidos de la Bruma, El pozo de la ascensión
  • Location
    Argentina
  • Joined

More fromMaximiliano Burgos

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp