گرفتن ورودی از کاربر

کاتلین از متد ()readLine برای گرفتن ورودی از کاربر استفاده می کند. این متد، تمام کاراکترهایی را که شما در محیط کنسول تایپ می‌کنید تا زمانی که دکمه Enter را می‌زنید، می‌خواند. به برنامه زیر توجه کنید :

  1: fun main(args: Array<String>)
  2: {
  3:     print("Enter your Name: ")
  4:     val name = readLine()
  5: 
  6:     print("Enter your Age: ")
  7:     val age = readLine()
  8: 
  9:     print("Enter your Height: ")
 10:     val height = readLine()
 11: 
 11:     println()
 12: 
 13:     println("Name is $name.")
 14:     println("Age is $age.")
 15:     println("Height is $height.")
 16: }

با اجرای برنامه و کلیک بر روی قسمت پایین برنامه Intellj IDEA، که به آن محیط کنسول هم گفته می شود، نشان گر ماوس نمایش داده می شود و برنامه از شما می خواهد که اطلاعات را وارد کنید :

برنامه از شما نام، سن و قدتان را می خواهد و شما باید بعد از وارد کردن اطلاعات هر بخش، دکمه Enter را بزنید :

با زدن دکمه Enter آخر، خروجی به صورت زیر نمایش داده می شود:

در همین حد کافیست که بدانید که متد ()readLine ورودی را از کاربر گرفته و آنها را به صورت رشته در متغیرهای age ،name و height (خطوط 4، 7 و 10) قرار می دهد. قبول دارید که سن و قد باید از نوع عددی باشند؟ اگر بخواهید فقط در محیط کنسول مقادیری را نمایش دهید که عددی یا غیر عددی بود مشکلی به وجود نمی آورد. مانند مثال بالا، که ما فقط از کاربر اطلاعاتی را گرفته و چاپ کرده ایم. ولی اگر بخواهیم دو عدد را با هم جمع کنیم، باید چکار کنیم. به کد زیر توجه کنید :

fun main(args: Array<String>)
{
    print("Enter Number1: ")
    val number1 = readLine()

    print("Enter Number2: ")
    val number2 = readLine()

    println()

    println("Sum is : " + (number1 + number2))
}

کد بالا را اجرا کرده و دو عدد را وارد نمایید:

همانطور که مشاهده می کنید بعد از وارد کردن اعداد 10 و 5 خروجی عدد 105 می شود. البته در اصل عدد 105 نیست، بلکه برنامه دو عدد را مانند دو رشته در نظر می گیرد و آنها را به هم می چسباند. اگر بخواهیم این دو عدد را واقعا با هم جمع کنیم و عدد 15 را به دست بیاوریم باید بعد زا متد ()readLine از متدهای تبدیل داده که در درس های قبل ذکر کردیم به صورت زیر استفاده نمایید:

fun main(args: Array<String>)
{
    print("Enter Number1: ")
    val number1 = readLine()!!.toInt()

    print("Enter Number2: ")
    val number2 = readLine()!!.toInt()

    println()

    println("Sum is : " + (number1 + number2))
}

به خروجی کد بالا توجه کنید:

همانطور که گفتیم، متد ()readLine رشته در یافت می کند، برای تبدیل این رشته به عدد صحیح از متد ()toInt در استفاده کرده ایم. اینکه چرا قبل از متد ()toInt علامت !! را قرار داده ایم در درس های آینده توضیح می دهیم. در نتیجه متد ()toInt رشته گرفته شده توسط متد ()readLine را به نوع صحیح تبدیل کرده و در متغیر های number1 و number2 می گذارد. با این وجود می توانیم دو متغیر را که عددی هستند با هم جمع کنیم.