/*
class car(var type:String,var model:Int,var Price:Int,var
KmDriven:Int,var Owner:String) {
init {
println("Car Company=$type")
println("Car Model=$model")
println("Car Price=$Price")
println("Km Driven=$KmDriven")
println("Previous Car Owner Name=$Owner")
}
fun getcarprice():Double
{
return Price!!.toDouble() - Price!!.toDouble()*10
}
}
class car1()
{
var type:String?=null
var model:Int?=null
var Price:Int?=null
var KmDriven:Int?=null
var Owner:String?=null
constructor(type:String,model:Int,Price:Int,KmDriven:Int,Owner:String):t
his()
{
[Link]=type
[Link]=model
[Link]=Price
[Link]=KmDriven
[Link]=Owner
}
constructor(Price:Int):this()
{
[Link]=Price
}
fun getcarprice():Double
{
return [Link]!!.toDouble() - ([Link]!!.toDouble()*10)
}
}
fun main(args:Array<String>)
{
val Mycar= car("BMW",2000,100000,50000,"Varun")
println([Link])
println([Link])
println([Link])
val Jancar= car1(Price = 5000000)
var mecar= car1("KIA", 2011,1500000,1000,"Family")
println("Jancar Price is= ${[Link]}"+[Link])
println([Link]())
println([Link]())
println([Link]())
}
*/
// We can use class to categorize or to make different pages in an app
and we can use constructors to chose in the category//
// we can write formulas and do calculation using Functions (fun) and
access from anywhere//
/*
open class operations()
{
public var Name="Arun" // Can be accessed anywhere in the program//
protected var Name1="Varun" // can access only in Inherited
class //
private var Name2="Merun" // Can't access anywhere//
open fun sum(n1:Int,n2:Int):Int
{
return n1+n2+2
}
fun sub(n1:Int,n2:Int):Int
{
return n1-n2
}
}
class Multioperations():operations()
{
var t:Int?=null
override fun sum(n1:Int,n2:Int):Int // Override command is used to
give preferences within same operation//
{
t=22
return n1+n2
}
fun Div(n1:Int,n2:Int):Double
{
return ([Link]()/[Link]())
}
fun Mul(n1:Int,n2:Int):Int
{
return n1*n2
}
fun getname() {
println([Link])
println(super.Name1)
// super.Name2 (Can't access this here)//
}
}
fun main(args:Array<String>)
{
var op = operations()
var Mop = Multioperations()
var Cal1=[Link](5,465)
var Cal2=[Link](54,8)
var Cal3=[Link](5,465)
println("Sum of two number is=$Cal1")
println("Division of two number is=$Cal2")
println("Sum of two number is=$Cal3")
println([Link])
println([Link]())
println(Mop.t)
// println(op1.Name1) (Can't access this here//
// println(op1.Name2) (Can't access this here//
}
*/
/*
// Interface //
interface op
{
fun sum(n1:Int,n2:Int) { println("sum is" + (n1 + n2)) }
fun div(n1:Int,n2:Int) { println("Division is" + (n1 / n2)) }
}
class Userop:op {
override fun sum(n1: Int, n2: Int) {
println("sum is" + (n1 + n2+2))
}
override fun div(n1: Int, n2: Int) {
println("Division is" + ((n1 / n2)+2))
}
}
class Adminop:op {
override fun sum(n1: Int, n2: Int) {
println("sum is" + (n1 + n2-2))
}
override fun div(n1: Int, n2: Int) {
println("Division is" + ((n1 / n2)-2))
}
}
class Managerop:op {
fun main(args:Array<String>) {
var s1=Userop().sum(13,4)
var d1=Userop().div(21,3)
var s2=Adminop().sum(13,4)
var d2=Adminop().div(21,3)
var s3=Managerop().sum(3,4)
var d3=Managerop().div(3,4)
}
*/
// Abstract //
// The Use of Abstract is the abstract class can't directly be used in
main function, to access abstract//
// you need it innerhitate it using another class and access from that
class//
/*
abstract class Creditcard()
{
fun creditinfo():String
{
return("2378dbhgd283")
}
fun newcredit():String
{
return("New card created")
}
abstract fun newcredit1():String
}
class userinfo:Creditcard()
{
fun creditNo():String
{
return(creditinfo())
}
fun newcred():String{
return(newcredit())
}
override fun newcredit1():String
{
return("2nd card is created")
}
}
fun main(args:Array<String>)
{
// var credit=Creditcard() // Cannot create an instance of an
abstract class //
// println() // If we remoe Abstract in the main class then we can
directly access the main class here//
// println([Link]())
var credit=userinfo()
println("Your Credit card Number is")
println([Link]())
println([Link]()) //Without Override//
println(credit.newcredit1()) //Overrided fun//
}
*/
/*
//enum//
enum class Direction(){
NORTH,SOUTH,EAST,WEST
}
fun main(args:Array<String>)
{
var direction=[Link]
if(direction==[Link])
{
println("He went to North")
}
else{
println("Don't know where he went")
}
}
*/
/*
//generic//
//To define the data type & to get input for the same data type, this
can be used in Registration part//
class userinfo<T,I> (Name:T, ID:I) { //Universal/definable Data Type
Structure//
init {
println("Name:$Name, ID:$ID")
}
}
class Admininfo(Name:String, ID:Int,){ //Pre Defined Data Type//
init {
println("Name:$Name, ID:$ID")
}
}
fun <T>display(process:T) //We should declare a fun inorder to diplay
any templates within a function Ex:235Line//
{
println(process)
}
fun main(args:Array<String>)
{
println("***** User Information *****")
var user=userinfo<String,Int>("Varun",29)
var user1=userinfo<String,Int>("Arun",1)
var Admin=Admininfo("Varun", 56)
Admininfo("Arun", 21)
println("Enter Name and ID")
var user2=userinfo<String,Int>(readLine()!!.toString(),
readLine()!!.toInt())
display<Int>(32)
display<Double>(32.3)
}
*/
/*
//Extension//
//Creat in array extension/fun to use anywhere in the program//
fun ArrayList<String>.swap(index1:Int,index2:Int)
{
var temp=[Link](index1)
[Link](index1,[Link](index2))
[Link](index2,temp)
}
fun main(args:Array<String>)
{
var arraylist=ArrayList<String>()
[Link]("Varun")
[Link]("Arun")
[Link]("Vishnu")
[Link]("Viki")
println(arraylist)
[Link](0,1)
println(arraylist)
}
*/
/*
//package//
//It is used to simplified the programming by calling function in other
pages and linking here//
import [Link].* //this command will fetch you the class you want in
other package like in [Link]//
fun main(args:Array<String>) // " * " Indicates in the import line
that fetch all the files in the package//
{
println("Enter 1 for addition")
println("2 for Subtraction")
println("any number for Multiplication")
var Selection = readLine()!!.toInt()
if (Selection == 1) {
var Cal = Sum()
println([Link]())
}
if (Selection == 2) {
var Cal = Difference()
println(Cal.Calculate1())
}
else{
var Cal = Multiply()
println(Cal.Calculate2())
}
}
*/
/*
//Inner & Nested Class//
class Outer()
{
var name:String?=null
class nested() //we can't access main class content in nested
class//
{
var n:Int=6
fun Newuser(){
println("Welcome to Kotlin")
}
}
inner class nested1() //we can access main class content in inner
nested class//
{
fun Newuser(){
println(name)
//println(n)// //we can't access nested class content in
here//
}
}
}
fun main(args:Array<String>)
{
var out=Outer()
var out1=[Link]()
println(out.nested1())
println([Link]())
println([Link])
[Link]="Varun"
println([Link])
}
*/
/*
//Lazy & Singleton//
class Singleton
{
var name:String?=null
fun display()
{
println("function Instance created")
}
private constructor()
{
println("Constructor Instance created")
}
companion object{
val instance:Singleton by lazy{ Singleton()}
}
}
fun main(args:Array<String>)
{
var s1=[Link]
[Link]="Varun"
println([Link])
var s2=[Link]
println([Link])
var s3=[Link]
[Link]="Mithun"
println([Link])
}
*/
/*
//Comparable//
// for sorting the data in a list//
class person(var Name:String, var Age:Int):Comparable<person> {
override fun compareTo(other: person):Int {
return [Link] - [Link]
}
}
fun main(args:Array<String>){
var namelist=ArrayList<person>()
[Link](person("varun",12))
[Link](person("Arun",82))
[Link](person("Mithun",32))
for (person in namelist)
{
println("Name:" +[Link])
println("Age:" +[Link])
}
[Link](namelist)
for (person in namelist)
{
println("Name:" +[Link])
println("Age:" +[Link])
}
}
*/
/*
// STORAGE FILES //
// Exception Try-Catch //
// This is used to display a Error code when a process is failed to give
the result and continue the remaining program //
fun main(args:Array<String>)
{
try {
println("Enter a Number")
var n:Int= readLine()!!.toInt()
var Div=100/n
println("Result is $Div")
}catch (ex:Exception)
{
println("ERROR:Please enter a valid Number")
println("ERROR MSG :"+[Link])
}
println("Enter a Number")
var n:Int= readLine()!!.toInt()
var Div=100/n
println("Result is $Div")
println("the process is over")
}
*/
/*
// Create file path //
// and Read or write data to the path //
// This is used to store any user data entered/recorded by user //
fun main(args:Array<String>) {
println("Enter 1 to write\n Enter any number to Read")
val op=readLine()!!.toInt()
if(op==1) {
println("Enter the data")
var str: String = readLine().toString()
WriteToFile(str)
}
else{
ReadFromFile()
}
}
fun WriteToFile(str:String) {
try {
var fo = FileWriter("[Link]", true)
[Link](str+"\n")
[Link]()
} catch (ex: Exception) {
println("Error Message" + [Link])
}
}
fun ReadFromFile(){
try {
var fin= FileReader("[Link]")
var c:Int?
do {
c=[Link]()
print(c!!.toChar())
}while (c!=-1)
}catch (ex:Exception)
{
println("Error Message"+[Link])
}
println("App is Done")
}
*/
/*
//Multi Threading //
//to override a function that is predefined or saved in the libraries //
fun main(args:Array<String>){
println("Count Started")
var t1=thread("Thread 1")
[Link]()
var t2=thread("Thread 2")
[Link]()
[Link]()
println("Thread Executed")
}
class thread:Thread{
var ThreadName:String=""
constructor(ThreadName:String):super(){
[Link]=ThreadName
}
override fun run(){
var count=0
while (count<11) {
println("$ThreadName Count:$count")
count++
try {
[Link](1000,500)
} catch (ex: Exception) {
print([Link])
}
}
}
}
*/
import [Link]
fun main(args:Array<String>){
println("Enter Birth Date")
var bday:Int= readLine()!!.toInt()
if(bday>31) {
println("Enter Valid Date from 1 to 31")
return
}
println("Enter Birth Month")
val bmonth:Int= readLine()!!.toInt()
if(bmonth>12) {
println("Enter Valid Month from 1 to 12")
return
}
println("Enter Birth Year")
val byear:Int= readLine()!!.toInt()
if(byear>[Link]().get([Link]!!.toInt())) {
println("Enter Valid Year")
return
}
val pyear=[Link]().get([Link]!!.toInt())
val pmonth=([Link]().get([Link]!!.toInt())+1)
val pday=[Link]().get([Link]!!.toInt())
println("Your Age is")
if(bmonth>=pmonth){
var ageyear:Int=(pyear-1)-byear
var agemonth:Int=(12-bmonth)+(pmonth-1)
val
pmonthdays=[Link]().getActualMaximum(Calendar.DAY_OF_MONTH
)
var ageday:Int=(pmonthdays-bday)+pday
if (ageday>=pmonthdays){
agemonth++
ageday=ageday-pmonthdays
}
if (agemonth==12){
ageyear++
agemonth=0
if (ageday==0){
println("**** Happy BirthDay ****")
}
}
val ageindays=ageyear*365.24 + agemonth*30.417 + ageday
val ageinHours=ageindays*24
println("$ageyear YEARS $agemonth MONTHS $ageday DAYS")
println("$ageindays Days")
println("$ageinHours Hours")
}
else{
var ageyear:Int=pyear-byear
var agemonth:Int=(pmonth-1)-bmonth
val
pmonthdays=[Link]().getActualMaximum(Calendar.DAY_OF_MONTH
)
var ageday:Int=(pmonthdays-bday)+pday
if (ageday>=pmonthdays){
agemonth++
ageday=ageday-pmonthdays
}
if (agemonth==12){
ageyear++
agemonth=0
if (ageday==0){
println("**** Happy BirthDay ****")
}
}
val ageindays=ageyear*365.24 + agemonth*30.417 + ageday
val ageinHours=ageindays*24
println("$ageyear YEARS $agemonth MONTHS $ageday DAYS")
println("$ageindays Days")
println("$ageinHours Hours") }
}