KotlinUdemy icon indicating copy to clipboard operation
KotlinUdemy copied to clipboard

محاولة وفيها مشكلة

Open yasserHamad opened this issue 6 years ago • 16 comments

السلام عليكم استاذ حسين

حاولت اقول بتطبيق ما ذكر من ايجاد العمر باليوم والشهر والسنة هذه المشكلة

import java.util.* fun main(args: Array<String>){

// input
println("Enter Your birthDay : ")
var DayofBirth: Int = readLine()!!.toInt()

println("Enter Your birthMonth : ")
var MonofBirth: Int = readLine()!!.toInt()

println("Enter Your birthYear : ")
var yearofBirth: Int = readLine()!!.toInt()



// process
var Today   =Calendar.getInstance().get(Calendar.DAY_OF_WEEK_IN_MONTH)
var Tomonth =Calendar.getInstance().get(Calendar.MONTH)
var Toyear  =Calendar.getInstance().get(Calendar.YEAR)
var Age            :Int ?=null
var TheDay      :Int ?=null
var Themonth  :Int ?=null
var Theyear     :Int ?=null

if (Today < DayofBirth) {
    Today += 28
    Tomonth=-1
}
else
{
    TheDay= Today - DayofBirth
    println("age of days : $TheDay")
}

if (Tomonth < MonofBirth)
{
    Tomonth = +12
    Toyear = -1
}
else {

    Themonth = Tomonth - MonofBirth
    println("age of Month  $Themonth " )
     }

 Theyear = Toyear - yearofBirth


    // output
println("Your Age Day&Month&Year Is: $TheDay Days  $Themonth Months  $Theyear  Years")

}

yasserHamad avatar Mar 31 '18 14:03 yasserHamad

هل قمت بإغلاق الدالة أسفل البرنامج ؟ Fun

oakoudad avatar Mar 31 '18 14:03 oakoudad

fun main(args: Array) { ----> fun main(args:Array<String>){

oakoudad avatar Mar 31 '18 14:03 oakoudad

عفوا استاذي طبقت ما في التدريب كما هو اغلاق الدالة اذا كان بالقوس المعقوف الاخير فقد تم ذلك

yasserHamad avatar Mar 31 '18 14:03 yasserHamad

أوكي و بالنسبة للدالة ضعها بهذا الشكل fun main(args: Array<String>) {

oakoudad avatar Mar 31 '18 15:03 oakoudad

بعد التعديل كما ذكرت استاذي

صارت الاخطاء كالتالي

Information:Kotlin: kotlinc-jvm 1.2.30 (JRE 1.8.0_161-b12) Information:31/03/18 06:13 م - Compilation completed with 3 errors and 0 warnings in 1s 844ms E:\WorkSpace_Eclipce\Kotln\Project Kotlen\src\findAge.kt Error:(4, 20) Kotlin: One type argument expected for class Array<T> Error:(53, 39) Kotlin: Variable 'TheDay' must be initialized Error:(53, 48) Kotlin: Variable 'Themonth' must be initialized

yasserHamad avatar Mar 31 '18 15:03 yasserHamad

var TheDay :Int ?=null var Themonth:Int ?=null var Theyear :Int ?=null

oakoudad avatar Mar 31 '18 16:03 oakoudad

احسنت استاذي تم تجاوز الاخطاء لكن برايك النتيجة لما فيها خطا في حساب السنوات والاشهر

yasserHamad avatar Mar 31 '18 16:03 yasserHamad

الأفضل لو أنك تجد مشاكل الحساب لحالك دون الإعتماد على أحد فيها سأرسل لك بعد قليل طريقتي الخاصة لكن حاول الإعتماد على منطقك لتستطيع حل أي مشكل مستقبلا

oakoudad avatar Mar 31 '18 16:03 oakoudad

ربي يسعدك تمام اذا راح احاول

yasserHamad avatar Mar 31 '18 16:03 yasserHamad

لا تعتمد حتى على طريقة الاستاذ حسين حاول أخد ورقة و قلم و قم بحساب العمر و جرد جميع الاحتمالات ومنه الوصول لأفضل طريقة لحساب العمل

oakoudad avatar Mar 31 '18 16:03 oakoudad

اشكرك جزيل الشكر لكن الخطا السابق الذي كان حله var TheDay :Int ?=null var Themonth:Int ?=null var Theyear :Int ?=null

هل افهم انه عند تعرف اي متغير يجب ان يكون بهذه الصيغة ؟

yasserHamad avatar Mar 31 '18 16:03 yasserHamad

كأنك تقول أن هذا المتغير يقبل أن يكون خال من أي معلومات و للإشارة من الضرورة وضعها فقط لــ var TheDay :Int ?=null var Themonth:Int ?=null لأنك وضعت إحتمالات و غير متأكد 100% أن تلك المتغيرات ستحصل على مدخلات أما var Theyear :Int فسيحصل على محتواه دون تخطي أي إحتمال

oakoudad avatar Mar 31 '18 16:03 oakoudad

بطريقة أخرى أي متغير تقوم بتحديده و محتواه داخل دالة شرطية فعليك إما أن تضع له قيمة أولية مثلا var TheDay :Int = 0 أو تضع له var TheDay :Int ?=null بمعنى يحتمل أن يكون بدون محتوى و الطريقة الثانية أكثر منطقية

oakoudad avatar Mar 31 '18 16:03 oakoudad

ربي يسعدك

yasserHamad avatar Mar 31 '18 16:03 yasserHamad

عاجز عن شكرك استاذي

yasserHamad avatar Mar 31 '18 16:03 yasserHamad

لا تشكرني أخي فهذا واجبي و أتمنى لك التوفيق

oakoudad avatar Mar 31 '18 16:03 oakoudad