یکی اینکه در زبان کاتلین چطور میتونیم از کاربر یک ورودی بگیریم؟مثلا میخوایم یه عدد از ورودی بگیریم و 2 برابرش کنیم و نهایتا حاصلش رو به کاربر نمایش بدیم
دوم بحث type casting هست. اینو هم یه توضیحی بدین
خیلی ممنون
درود
1. برای گرفتن ورودی رشته میتونید از readline به صورت زیر استفاده کنید:
var input = readLine()
print("You entered: $input")
اما اگر رشته نباشه، باید کتابخانه scanner رو ایمپورت کنید:
import java.util.Scanner;
Scanner(System.`in`)
var enteredNumber1:Int = number1.nextInt()
println("You entered: $enteredNumber1")
2. برای تبدیل به انواع مختلف داده داریم:
1. toChar() – To convert a type to Char type. 2. toInt() – To convert a type to Int type. 3. toLong() – To convert a type to Long type. 4. toFloat() – To convert a type to Float type. 5. toDouble() – To convert a type to Double type. 6. toByte() – To convert a type to Byte type. 7. toShort() – To convert a type to Short type.
نازنین کریمی مقدم۳۰ دی ۱۴۰۲، ۱۲:۰۴
fun calculateFactorial(n: Int): Long {
// Implement the logic to calculate the factorial of 'n'
// Return the result as a Long
}
fun main() {
// Get user input for the number
print("Enter a positive integer: ")
val input = readLine()?.toIntOrNull()
if (input != null && input >= 0) {
// Call the calculateFactorial function and print the result
val result = calculateFactorial(input)
println("The factorial of $input is: $result")
} else {
println("Please enter a valid non-negative integer.")
}
}
این کد رو من به عنوان تمرین توی ChatGPT دیدم این الان نحوه گرفتن ورودیش و type casting ش برام واضح نیست!!!
میشه یه توضیح مختصر بدین؟
Arman۳۰ دی ۱۴۰۲، ۱۲:۱۵
هر دوتا روشی که برای گرفتن ورودی گفتید رو توی IntelliJ امتحان کردم هر دوتاشون error میدن
Arman۳۰ دی ۱۴۰۲، ۱۳:۳۶
1. در کد chatgpt در این خط ورودی رو میگیره (readLine) و همونجا به عدد تبدیلش میکنه (toIntOrNull):
readLine()?.toIntOrNull()
2. متن خطاهایی که میگیرید رو دقیق اینجا بفرستید.
نازنین کریمی مقدم۰۱ بهمن ۱۴۰۲، ۰۶:۵۷
package com.company
import java.util.Scanner;
fun main() {
Scanner(System.`in`)
val number1 = null
var enteredNumber1:Int = number1.nextInt()
println("You entered: $enteredNumber1")
}
Unresolved reference: number1
این اولین error بود که دریافت کردم
بعد از اون
package com.company
import java.util.Scanner;
fun main() {
Scanner(System.`in`)
val number1 = null
var enteredNumber1:Int = number1.nextInt()
println("You entered: $enteredNumber1")
}
error قبلی نبود
Unresolved reference: nextInt
این error رو بهم داد
الان دیگه نمیدونم چیکار کنم
Arman۰۱ بهمن ۱۴۰۲، ۰۷:۰۸
توی Source code اولی خط val number1 = null نبود توی دومی اضافه کردم
Arman۰۱ بهمن ۱۴۰۲، ۰۷:۱۱
متوجه شدم. من کد رو کامل ننوشتم و شبه کدی توضیح دادم اگر همونو بزنید خطا میگیرید :)))
برای مثال کد کاملش اینه:
import java.util.Scanner;
fun main() {
val reader = Scanner(System.`in`)
print("Enter a number: ")
var num1:Int = reader.nextInt()
println("You entered: $num1")
}
و خروجی به این شکل میشه:
نازنین کریمی مقدم۰۱ بهمن ۱۴۰۲، ۰۷:۴۴
package com.company
import java.util.Scanner
fun main() {
val reader = Scanner(System.`in`)
print("Enter your point: ")
val userInput:Double = reader.nextDouble()
println("You entered: $userInput")
}
چرا کد بالا به من error پایینی رو میده؟
Enter your point: 10.5
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:947)
at java.base/java.util.Scanner.next(Scanner.java:1602)
at java.base/java.util.Scanner.nextDouble(Scanner.java:2573)
at com.company.MainKt.main(Main.kt:7)
at com.company.MainKt.main(Main.kt)
Process finished with exit code 1
من کدتون رو با این کامپایلر آنلاین تست کردم و مشکلی نداره:
https://onecompiler.com/kotlin
نازنین کریمی مقدم۰۱ بهمن ۱۴۰۲، ۱۲:۱۲
خیلی عجیبه من توی همین کامپایلر آنلاین که خودتون میگین تست میکنم و همون error داخل IntelliJ رو بهم میده.
import java.util.Scanner
fun main() {
val reader = Scanner(System.`in`)
print("Enter your point: ")
val userInput:Double = reader.nextDouble()
println("You entered: $userInput")
}
این هم error که بهم میده
Enter your point:
Exception in thread "main" java.util.NoSuchElementException at java.base/java.util.Scanner.throwFor(Scanner.java:937) at java.base/java.util.Scanner.next(Scanner.java:1594) at java.base/java.util.Scanner.nextDouble(Scanner.java:2564) at MainKt.main(Main.kt:5) at MainKt.main(Main.kt)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at org.jetbrains.kotlin.runner.AbstractRunner.run(runners.kt:64)
at org.jetbrains.kotlin.runner.Main.run(Main.kt:149)
at org.jetbrains.kotlin.runner.Main.main(Main.kt:159)
Kotlin Online Compiler
Arman۰۱ بهمن ۱۴۰۲، ۱۲:۳۷
با یه سیستم دیگه تست کنید (مثلا گوشی)
و اول عدد رو وارد کنید و بعد گزینه ران رو بزنید.
نازنین کریمی مقدم۰۲ بهمن ۱۴۰۲، ۱۱:۰۴
با گوشی هم بهم error میده،نمیدونم چرا
Arman۰۲ بهمن ۱۴۰۲، ۱۱:۲۲
import java.util.InputMismatchException
import java.util.Scanner
fun main() {
val reader = Scanner(System.`in`)
print("Enter your point: ")
try {
val userInput: Double = reader.nextLine().toDouble()
println("You entered: $userInput")
} catch (e: NumberFormatException) {
println("Invalid input. Please enter a valid number.")
} catch (e: InputMismatchException) {
println("Invalid input. Please enter a valid number.")
} finally {
reader.close()
}
}
دیشب ChatGPT این کد رو بهم داد،البته بعد از اینکه چندبار کدش رو تغییر داد،در واقع کد اولی که بهم داد error داد چند بار ازش خواستم کد رو تغییر بده تا این کد رو بهم داد و درست کار کرد اما مشکل اینه چون تازه یادگیری رو شروع کردم خیلی از keywordها رو هنوز نمیشناسم و کد بالایی رو هم متوجه نشدم،بهم توضیحش بدین
بعد یه مورد دیگه هم هست من چند وقت پیش با آقای موحد صحبت تلفنی داشتم
به من برای همکاری با مجموعه پیشمهادی دادن،منتها من بخاطر امتحانات دانشگاه نتونستم پیگیری کنم الان که امتحاناتم تموم شده وقت کردم مسئله رو پیگیری کنم ولی به آقای موحد تو تلگرام پیام دادم چندوقتی میشه تلگرامشون رو چک نکردن.گفتم اگر امکانش هست به ایشون اطلاع بدین،خیلی ممنون
Arman۰۲ بهمن ۱۴۰۲، ۱۱:۳۸
سلام صبح بخیر و خسته نباشید خودم متوجه مشکلی که سورس کدم داشت شدم
لطف کردید و ممنون بابت پیگیری تون
Arman۰۳ بهمن ۱۴۰۲، ۰۴:۴۹
سلام مجدد پوزش بابت تاخیر در پاسخگویی
خوشحالم مشکلتون حل شد، پیامتون رو هم به آقای موحد ارسال کردم.