Untitled

                Never    
Scala
       
Program 1
Q. Write a Scala Program to print any sample message over console: Example: “Hello
World!”
Source Code:
object q1
{
def main(args:Array[String]):Unit={
 println("Hello world ")
}
}


Q. Write a Scala program to implement a basic calculator with add, subtract, multiply,
divide features by using Methods, Class, Object and Fields in Scala
Source Code:
object calci
{
def addition(a:Int,b:Int):Int={
var sum:Int=0
sum=a+b
return sum
}
def subtract(a:Int,b:Int):Int={
var diff:Int=0
if(a>b)
{
diff=a-b
}
else
{
diff=b-a
}
return diff
}
def divide(a:Int,b:Int):Int={
var div:Int=0
if(a>b)
{
div=a/b
}
else if(b>a)
{
div=b/a
}
else
{
div=0
}
return div
}
def multiply(a:Int,b:Int):Int={
var pro:Int=1
pro=a*b
return pro
}
def main(arg:Array[String]):Unit=
{
println("Enter any two numbers")
var a=scala.io.StdIn.readInt()
var b=scala.io.StdIn.readInt()
println("1 for addition\n2 for subtraction\n3 for division\n4 for multiplication")
var choice=scala.io.StdIn.readInt()
if(choice==1)
{
println("Value after addition is ", addition(a,b))
}
else if(choice==2)
{
println("Value after subtracting is ", subtract(a,b))
}
else if(choice==3)
{
println("Value after division is ", divide(a,b))
}
else
{
println("Value after multiplication is ", multiply(a,b))
}
}
}


Program 3
Q. Write a Scala program in which you are supposed to use or print all these data types
and their values inside main method using Scala
Source Code:
object program2
{
def dTypE(variable:AnyVal):AnyVal=
{
println("Parent class AnyVal invoked!!")
println(variable.getClass.getSimpleName+" entered")
println("Data entered is "+variable)
println("**************************")
}
def unitcheck(variable1:AnyVal):Unit=
{
println("Data entered is "+variable1)
}
def dTypE1(variable1:Any):Any=
{
println("superclass Any invoked!!")
println("Data entered is "+variable1)
println("**************************")
}
def main(args:Array[String]):Unit={
println("Enter the datatypes you want to check...")
println("1 for Byte\n2 for Integer\n3 for Float\n4 for Double\n5 for
character\n6 for Long\n7 for Boolean\n8 for Short\n")
var c=scala.io.StdIn.readInt()
if(c==1)
{
println("Enter any value")
var a=scala.io.StdIn.readByte()
if(a>=java.lang.Byte.MIN_VALUE &&
a<=java.lang.Byte.MAX_VALUE)
{
dTypE(a)}
else
{
println("Out of range!!")}
}
else if(c==2)
{
println("Enter any value")
var a=scala.io.StdIn.readInt()
if(a>=java.lang.Integer.MIN_VALUE && a<=java.lang.Integer.MAX_VALUE)
{
dTypE(a)}
else
{
println("Out of range!!")}
}
else if(c==3)
{
println("Enter any value")
var a=scala.io.StdIn.readFloat()
if(a>=java.lang.Float.MIN_VALUE && a<=java.lang.Float.MAX_VALUE)
{
dTypE(a)}
else
{
println("Out of range!!")}
}
else if(c==4)
{
println("Enter any value")
var a=scala.io.StdIn.readDouble()
if(a>=java.lang.Double.MIN_VALUE && a<=java.lang.Double.MAX_VALUE)
{
dTypE(a)}
else
{
println("Out of range!!")}
}
else if(c==5)
{
println("Enter any value")
var a=scala.io.StdIn.readChar()
if(a>=java.lang.Character.MIN_VALUE &&
a<=java.lang.Character.MAX_VALUE)
{
dTypE(a)}
else
{
println("Out of range!!")}
}
else if(c==6)
{
println("Enter any value")
var a=scala.io.StdIn.readLong()
if(a>=java.lang.Long.MIN_VALUE && a<=java.lang.Long.MAX_VALUE)
{
dTypE(a)}
else
{
println("Out of range!!")}
}
else if(c==7)
{
println("Enter either true or false for boolean")
var a=scala.io.StdIn.readBoolean()
dTypE(a)
}
else
{
println("Enter any value")
var a=scala.io.StdIn.readShort()
if(a>=java.lang.Short.MIN_VALUE && a<=java.lang.Short.MAX_VALUE)
{
dTypE(a)}
else
{
println("Out of range!!")}
}
println("Enter any string")
var st=scala.io.StdIn.readLine()
println("Data entered is "+st+" and the datatype is "+st.getClass.getSimpleName)
println("Enter any data for checking unit data type in scala")
var cg=scala.io.StdIn.readInt()
var f=unitcheck(cg)
println("Value returned is "+f)
println("**************************")
dTypE1(23)
dTypE1(List(1,2,3,4))
}
}


Question 4
Q. Write a Scala Program to :
• Demonstrate read line function using Scala
• Write a function to add two numbers using mutable and immutable values
• Write a program which would demonstrate the use of Access Modifiers
-Private
-Public
 -Protected
Source Code:
object program3_a_and_b
{
def input()
{
println("Enter any text ")
var s=scala.io.StdIn.readLine()
println("Text entered is "+s)
}
def mutable(x:Int,y:Int):Unit=
{
println("Addition is "+(x+y))
}
def main(args:Array[String]):Unit=
{
input()
println("Enter the initial values ")
var a=scala.io.StdIn.readInt()
var b=scala.io.StdIn.readInt()
println("Enter the updated values ")
a=scala.io.StdIn.readInt()
b=scala.io.StdIn.readInt()
println("Enter the immutable values ")
val c=scala.io.StdIn.readInt()
val d=scala.io.StdIn.readInt()
mutable(a,b)
println("Addition of immutable values are "+(c+d))
}
}
class A1
{
private var a:Int=34
def display1()
{
a+=35
println("Inside class with variable having private access modifier!!")
println("Value is "+a)
}
}
class B1
{
protected var b:Float=35.5F
def display2()
{
println("Data inside this class is "+b)
}
}
class B2 extends B1
{
def display3()
{
b+=34.5F
println("Inside B2 which is sub-class of class B1")
println("Data inside this class is "+b)
}
}
class C
{
var c:Int=32
def display4()
{
c+=24
println("Data is "+c)
}
}
object program3_c extends App
{
var obj1=new A1()
obj1.display1()
var obj2=new B1()
obj2.display2()
var obj3=new B2()
obj3.display3()
var obj4=new C()
obj4.display4()
}


Question 5
Q.Write a Scala program to:
• Pass two values and apply all Arithmetic operations on these values
• Pass two values and apply all Relational operations on these values
• Pass two values and apply all Logical operations on these values
• Pass two values and apply all Bitwise operations on these values
• Pass two values and apply all Assignment operations on these values
Source Code:
object program4
{
def arthmetic(a:Int,b:Int):Unit=
{
println("The following arthmetic operations are ")
println(a+"+"+b+" is "+(a+b))
println(a+"-"+b+" is "+(a-b))
println(a+"/"+b+" is "+(a/b))
println(a+"*"+b+" is "+(a*b))
println(a+"%"+b+" is "+(a%b))
}
def relation(a:Int,b:Int):Unit=
{
println("The following relational operations are ")
println("Is "+a+" equal to "+b+" ? : "+(a==b))
println("Is "+a+" greater than "+b+" ? : "+(a>b))
println("Is "+a+" less than "+b+" ? : "+(a<b))
println("Is "+a+" greater than or equal to "+b+" ? : "+(a>=b))
println("Is "+a+" less than or equal to "+b+" ? : "+(a<=b))
println("Is "+a+" not equal to "+b+" ? : "+(a!=b))
}
def logic(c:Boolean,d:Boolean):Unit=
{
println("Logical operators return boolean values !!")
println(c+" &&(Logical AND) "+d+" gives : "+(c&&d))
println(c+" ||(Logical OR) "+d+" gives : "+(c||d))
println(c+" !(Logical NOT) of &&(Logical AND) "+d+" gives : "+(!(c&&d)))
println(c+" !(Logical NOT) of ||(Logical OR) "+d+" gives : "+(!(c||d)))
}
def bitwise(a:Int,b:Int):Unit=
{
println("The bitwise operations are ")
println(a+" &(bitwise AND) "+b+" gives "+(a&b))
println(a+" |(bitwise OR) "+b+" gives "+(a|b))
println(a+" ^(EX-OR) "+b+" gives "+(a^b))
println("1's compliment of "+a+" is "+(~a))
println("Bitwise left shift of "+a+" is "+(a<<1))
println("Right shift bitwise of "+b+" is "+(b>>>1))
}
def assign(a:Int,b:Int):Unit=
{
println("These are the short-hand assignment operators ")
var c=0
c+=a
println("+=a is "+c)
c-=b
println("-=b is "+c)
c/=a
println("/=a is "+c)
c*=a
println("*=a is "+c)
}
def main(args:Array[String]):Unit=
{
println("Enter any two integers for various scala operations ")
var a=scala.io.StdIn.readInt()
var b=scala.io.StdIn.readInt()
var c=true
var d=false
arthmetic(a,b)
println("*************************************")
relation(a,b)
println("*************************************")
logic(c,d)
println("*************************************")
bitwise(a,b)
println("*************************************")
assign(a,b)
println("*************************************")
}
}


Program 6
Q. Write a Scala program to:
• Write a Scala program that reads a number(dynamic) and display its
 square, cube, and fourth power.
• Write a Scala program to check the given number is a prime number or not.
(Number can be static or dynamic).
• Create Student object with the main method. The variable studmarks is
initialized with a value of 75. In the if block, if the marks is greater than 65 then
the marks is incremented by 20 and the statement “student passed the exam
with distinction” is printed. Since the marks is initialized to 75 which is greater
than 65 the if loop statements are executed.
Source Code:
object program5
{
def power(a:Int):Unit=
{
println("Square of "+a+" is "+(a*a))
println("Cube of "+a+" is "+(a*a*a))
println("Fourth power of "+a+" is "+(a*a*a*a))
}
def prime(b:Int):Unit=
{
var i=0;var c=0
for(i<-1 to b)
{
if(b%i==0)
{
c+=1
}
}
if(c==2)
{
println("Number of factors of "+b+" is "+c)
println(b+" Is prime!!")
}
else
{
println("Number of factors of "+b+" is "+c)
println(b+" Isn't prime!!")
}
}
def Student(studmarks:Int):Unit=
{
var temp=0
if(studmarks>65)
{
temp=studmarks+20
println("student passed the exam with distinction ")
}
println("Final marks are "+temp)
}
def main(args:Array[String]):Unit=
{
var studmarks:Int=75
println("Enter any number ")
var a=scala.io.StdIn.readInt()
println("Enter any number ")
var b=scala.io.StdIn.readInt()
power(a)
println("******************************************")
prime(b)
println("******************************************")
Student(studmarks)
println("******************************************")
}
}


Program 7
Q. Write a Scala program to:
• Write a function in Scala that takes two numbers as parameters and returns
the Maximum and Minimum of them. (Use Single Nested Function)
• Write a function in Scala that takes two numbers as parameters and returns
the Maximum and Minimum of them. (Use Multi Nested Function)
• Explain in your recording what is Entry control and exit control Loop in
Scala
• Write a Scala Program which would use Break and Continue features to
check if an entered number is equal to 3 or not?
• Write a two loop function using nested loops to achieve smallest element in a
array in Scala
Source Code:
object program7_a
{
def maxmin(a:Int,b:Int)={
def max()={
if(a>b)
{
println(a+" is greater than "+b)
}
else
{
println(b+" is greater than "+a)
}
}
def min()={
if(a<b)
{
println(a+ " is smaller than "+b)
}
else
{
println(b+ " is smaller than "+a)
}
}
max()
min()
}
def main(args:Array[String]):Unit={
println("Enter any two integers ")
var a=scala.io.StdIn.readInt()
var b=scala.io.StdIn.readInt()
maxmin(a,b)
}
}
object program7_b
{
def maxmin(a:Int,b:Int)={
max()
def max()={
if(a>b)
{
println(a+" is greater than "+b)
}
else
{
println(b+" is greater than " +a)
}
min()
def min()={
if(a<b)
{
println(a+" is smaller than "+b)
}
else
{
println(b+" is smaller than "+a)
}
}
}
}
def main(args:Array[String]):Unit={
var a=scala.io.StdIn.readInt()
var b=scala.io.StdIn.readInt()
maxmin(a,b)
}
}
object program7_c
{
def entry_control()={
var i=0
while(i<=10)
{
print(i+",")
i+=1
}
println()
var j=1
for(j<-1 until 10)
{
print(j+",")
}
println()
}
def exit_control()={
var i=0
do
{
print(i+",")
i+=1
}while(i<=10);
}
def main(args:Array[String]):Unit={
entry_control()
exit_control()
}}
import util.control._
object program7_d
{
def break_continue()={
var obj1=new Breaks()
var b:Boolean=true
obj1.breakable
{
while(b)
{
println("Enter any number ")
var a=scala.io.StdIn.readInt()
if (a==3)
{
println(a+" entered!!")
obj1.break
}
}
}
}
def main(args:Array[String]):Unit=
{
break_continue()
}
}
object program7_e
{
def main(args:Array[String]):Unit={
var n=scala.io.StdIn.readInt()
println("Enter the elements...")
var z:Array[Int]=new Array[Int](n)
var i=0
for(i<-0 until z.length)
{
z(i)=scala.io.StdIn.readInt()
}
var j=0
var k=0
var large=0
for(j<-0 until z.length)
{
for(k<-j until z.length)
{
var temp=0
if(z(k)<=z(j))
{
temp=z(k)
z(k)=z(j)
z(j)=temp
}
}
}
var l=0
println("The smallest number is "+z(l))
}
}


Program 8
Q. Write a Scala program to:
• Compare two Strings: 1-"ABC", 2-"ABC"
• Convert a upper case string to lower case string
• Find the index of a char in a string
• Find the index of a sub string in a string
• Create a char array and store it into a string
Source Code:
object program8
{
def compare(a:String,b:String){
var n=a.compareTo(b)
if(n>0)
{
println(a+" is bigger than "+b)
}
else if(n<0)
{
println(b+" is bigger than "+a)
}
else
{
println("Both strings are equal")
}
}
def case_change(a:String,b:String){
println("After changing to lowercase string 1 is "+a.toLowerCase()+"
and string 2 is "+b.toLowerCase())
println("After changing to uppercase string 1 is "+a.toUpperCase()+"
and string 2 is "+b.toUpperCase())
}
def index(a:String){
println("Enter the character to be searched")
var temp=scala.io.StdIn.readLine()
println("Enter the sub-string to be searched")
var temp1=scala.io.StdIn.readLine()
var n=a.indexOf(temp)
var n1=a.indexOf(temp1)
if(n<0 && n1<0)
{
println("Character as well as sub-string not present")
}
else if(n>=0 && n1<0)
{
println("Index of character at "+n+" but sub-string not present")
}
else if(n<0 && n1>=0)
{
println("Character not present but Index of sub-string at "+n1)
}
else
{
println("Index of character and sub-string is at "+n+","+n1)
}
}
def char_arrayTOString(a:String){
var c=a.toCharArray()
var f:String=""
println("The character array is ")
for(i<-c)
{
print("'"+i+"'")
f+=i
}
println()
println("Converted character array to string is "+f)
}
def main(args:Array[String]):Unit={
println("Enter any two strings==>")
var c=scala.io.StdIn.readLine()
var d=scala.io.StdIn.readLine()
compare(c,d)
println("**************************************")
case_change(c,d)
println("**************************************")
println("Enter another string")
var t=scala.io.StdIn.readLine()
index(t)
println("**************************************")
char_arrayTOString(t)
println("**************************************")
}
}


Question 9
Q. Write a Scala program to:
• Different input methods for arrays
• Output questions (2 -5)
• Sorting an 1-D array
• Matrix printing
• Pattern printing
• Using Range method
• Using concat method to append 2 lists
Parts 2-5:
• Type mismatch error: found integer, required string
• Type mismatch error: found string, required integer
• Even when we have used “val” the program will run as we are not changing
any values inside the array
• Re-assignment to val error as both arrays have the type “val” and “val”
holds immutable values or the values cannot be changed.
Source Code:
object test
{
def input()
{
var a:Array[String] = new Array[String](3)
println("Enter the array elements ")
for(i<-0 to 2)
{
 a(i)=scala.io.StdIn.readLine()
}
var z = new Array[String](3)
z(0) = "Zara"; z(1) = "Nuha"; z(4/2) = "Ayan"
var k = Array("Zara", "Nuha", "Ayan")
println("Value(a) Value(z) Value(k)")
for(i<-0 to 2)
{
print(" "+a(i)+" "+z(i)+" "+k(i))
println()
}
println("Size of each array is "+a.size)
}
def sort()
{
println("Enter the size of the array ")
var n=scala.io.StdIn.readInt()
var a=new Array[Int](n)
println("Enter the array elements..")
for(i<-0 until a.size)
{
a(i)=scala.io.StdIn.readInt()
}
for(i<-0 until a.size)
{
 var temp=0
 for(j<-0 until a.size)
 {
 if(a(j)>=a(i))
 {
 temp=a(j)
 a(j)=a(i)
 a(i)=temp
 }
 }
}
println("Array after sorting is ")
for(i<-0 to n-1)
{
print(a(i)+" ")
}
}
def main(args:Array[String]):Unit={
input()
sort()
}
}
import Array.ofDim
object program9
{
 def matrix1()
{
var arr=ofDim[Int](3,3)
for(i<-0 to 2)
{
println("Enter row"+(i+1)+" elements ")
for(j<-0 to 2)
{
arr(i)(j)=scala.io.StdIn.readInt()
}
}
for(i<-0 to 2)
{
for(j<-0 to 2)
{
print(arr(i)(j)+" ")
}
println()
}
println("Matrix in reverse is....")
for(i<-(0 to 2).reverse)
{
for(j<-(0 to 2).reverse)
{
print(arr(i)(j)+" ")
}
println()
}
}
def matrix2()
{
var arr=ofDim[Int](3,3)
for(i<-0 to 2)
{
println("Enter row"+(i+1)+" elements ")
for(j<-0 to 2)
{
arr(i)(j)=scala.io.StdIn.readInt()
}
}
println("Converted matrix by arr(i)(N)/3 is==>")
for(i<-0 to 2)
{
 for(j<-0 to 2)
 {
 print(arr(i)(2)/3+" ")
 }
 println()
}
println("Converted matrix by index is==>")
for(i<-0 to 2)
{
 for(j<-0 to 2)
 {
 print((i+1)+" ")
 }
 println()
}
}
def pattern()
{
for(i<-0 to 3)
{
for(j<-0 to i)
{
print("*")
}
println()
}
println("----------------------------")
 var index3=1;var target=4
for(i<-1 to 4)
{
for(j<-1 to index3)
{
print(" ")
}
for(k<-1 to target)
{
 print("*")
}
index3+=1
target-=1
println()
}
}
def populate()
{
 var temp=List.range(1,20,3)
 println(temp)
}
def merge()
{
 var list1=List.range(1,20,3)
 var list2=List.range(1,20,2)
 var list3=List.concat(list1,list2)
 println(list1)
 println(list2)
 println(list3)
}
def main(args:Array[String]):Unit={
matrix1()
println("-----------------------------")
matrix2()
println("-----------------------------")
pattern()
println("-----------------------------")
populate()
println("-----------------------------")
merge()
}
}


Program 10
Q. Write a Scala program to:
• Initialize a list in all possible ways [at least 2]
• Print all list elements
• Check the head and tail of a list and check whether a list is empty or not
• Add two lists using:
 ":::" operator [fruit1 ::: fruit2]
 ".:::" operator [fruit1 .::: (fruit2)] [fruits 2 would come before fruits1]
 List.concat(L1,L2)
• Initialize a uniform list
• Concat a uniform and non-uniform list
Source Code:
object program11
{
def input_display()
{
 var a=List(1,2,3,4,5)
 var b=List.range(1,20)
 var c=List.tabulate(5)(n => n * n)
 println(a)
 println(b)
 println(c)
}
def check()
{
 var a=List.range(1,20,2)
 println(a)
 println(a.head)
 println(a.tail)
 if(a.isEmpty==false)
 {
println("List isn't empty")
 }
 else
 {
println("List is empty")
 }
 }
def concat_ways()
{
 var a=List("Benzema","Vinicius","Hazard")
 var b=List(9,20,7)
 println(a:::b)
 println(a.:::(b))
 var c=List.concat(a,b)
 println(c)
}
def un_iform()
{
 var a=List.fill(5)(2)
 var b=List.range(2,20,4)
 println(a)
 println(b)
 println(a:::b)
}
def main(args:Array[String]):Unit={
println("-----------------------------")
check()
println("-----------------------------")
concat_ways()
println("-----------------------------")
un_iform()
println("-----------------------------")
}
}


Program 11
Q. Write a Scala program to:
• Finding max and min element from a set
• Convert two lists into a map and vice-versa
• Iterating list elements using iterator
• list all first 20 even numbers between 300 and 400
Source Code:
import util.control._
object program11
{
def min_max()
{
 var a=Set(1,1,2,2,3,3,3,4,5,6,7,8)
 println("Set is "+a)
 println("Maximum element in the set is "+a.max)
 println("Minimum element in the set is "+a.min)
}
def lists_tomap()
{
var list1=List("Militao","Alaba","Nacho")
var list2=List(3,4,6)
var map1=list1.zip(list2).toMap
println("Lists when mapped result in "+map1)
println("Converted map to list using keys is "+map1.keySet.toList)
println("Converted map to list using values is "+map1.values.toList)
}
def iterate()
{
 var number=List.range(1,10)
 var i=number.iterator
 println("Values in the list using iterator is ")
 while(i.hasNext)
 {
 print(i.next+" ")
 }
}
def range()
{
 var num=List.range(301,400)
 var count=0
 var obj=new Breaks
 println("The first 20 even numbers are ")
 obj.breakable
 {
 for(i<-num)
 {
 if(i%2==0)
 {
 print(i+" ")
 count+=1
 }
 if(count==20)
 {
obj.break
 }
 }
 }
}
def main(args:Array[String]):Unit={
min_max()
println("----------------------------")
lists_tomap()
println("----------------------------")
iterate()
println("----------------------------")
range()
}
}


Program 12
Q. Write a Scala program to:
• Implement var args in a trait class, so the sub class can implement trait show
method which would accept variable length parameters.
• Accept a number and if the number is positive then print the square of that
number but if the number is negative then it should return "Negative
Number".
Source Code:
trait q12
{
 def show()
}
class traitq12 extends q12
{
 def show()
 {
 println("Inside sub-class")
 }
 def printAll(StringsAll:String*)
 {
 StringsAll.map(println)
 }
}
object program12
{
def main(args:Array[String]):Unit={
var obj=new traitq12
obj.show()
obj.printAll("text 1","text 2","Example of var args inside trait class")
println("Enter any number ")
var n=scala.io.StdIn.readInt()
if(square.isDefinedAt(n)==false)
{
 println("Number is negative ")
}
else
{
 println("Square of "+n+" is "+square(n))
}
}
var square=new PartialFunction[Int,Int]
{
 def isDefinedAt(x:Int)=x>=0
 def apply(x:Int)=x*x
}
}


Program 13
Q. Write a Scala program to:
• Read a month from console, and if the entered month is October, November,
December, January, February then it would print it is winter now else it should
print "It is $Month, and Winter will come again!"
• Read a string from a console, and from this string find how many times "can" or
"Can" word is used and also at the end your program should be able to replace
all "can" with "could" even if the string would not make any sense anymore
Source Code:
import scala.util.matching.Regex
object program13
{
def check()
{
 println("Enter any month of the year ")
 var month=scala.io.StdIn.readLine()
 var test=month match
 {
 case "October"=>println("It is Winter")
 case "october"=>println("It is Winter")
 case "November"=>println("It is Winter")
 case "november"=>println("It is Winter")
 case "December"=>println("It is Winter")
 case "december"=>println("It is Winter")
 case "January"=>println("It is Winter")
 case "january"=>println("It is Winter")
 case "February"=>println("It is Winter")
 case "february"=>println("It is Winter")
 case month1=>s"It is $month1,and Winter will come again!"
}
println(test)
}
def pattern()
{
var pat1="(C|c)an".r
var pat2="can".r
var sentence="Can can could might be should shall can CAnn"
var a=((pat1 findAllIn sentence).mkString(","))
var list=a.split(",").toList
println("Total occurences are "+list.size)
println("After replacing can with could the sentence becomes ")
println((pat2 replaceAllIn(sentence,"could")))
}
def main(args:Array[String]):Unit={
check()
println("-----------------------------")
pattern()
}
}


Program 14
Q. Write a Scala program to:
• Handle Divide by Zero exception, using a try and catch block then finally block
would print "This is final block.".
• Would create a new file name file.txt, and write factorial of a number inside this
file. For example, if you enter 3 from console the file would contain 3, 2, 1, the
factorial of 3
• Take both list of integers and strings. Use a common method, declared in a trait
and implemented in implicit objects for both String and Integer
• Use a case class to define a shopping cart item. Each shopping cart item should
have the following properties, namely, a name, a price, and a quantity bought,
use an appropriate data structure to store the above-mentioned shopping cart
items. Thereafter, define and use a method that will print out all items from a
given shopping cart.
Source Code:
import java.io.File
import java.io.PrintWriter
import scala.io.Source
trait check[I]
{
 def show(a:I):String
}
object program14
{
var a1:check[List[Int]]=new check[List[Int]]
{
def show(intValue:List[Int]):String=s"Integer List is $intValue"
}
var a2:check[List[String]]=new check[List[String]]
{
def show(stringValue:List[String]):String=s"String List entered is
$stringValue"
}
def exception_handling()
{
 try{
 println("Enter the value of denominator ")
 var d=scala.io.StdIn.readInt()
 var res=10/d
 println("Result is "+res)
 }
 catch{
 case a: ArithmeticException=>
 {
 println("Arithmetic Exception occured")
 }
 }
 finally
 {
 println("Execution successfull")
 }
}
def file()
{
 var obj=new File("input.txt")
 var writer=new PrintWriter(obj)
 println("Enter any number ")
 var n=scala.io.StdIn.readInt()
 while(n!=0)
 {
 var temp=n.toString
 writer.write(temp)
 writer.write(",")
 n-=1
 }
writer.close()
var filename="input.txt"
for (line <- Source.fromFile(filename).getLines)
 {
 print(line)
}
println()
}
def cart()
{
var cart1=Map("Icecream"->"Vanilla Icecream","Price"-
>"2.99$","Quantity"->10)
var cart2=Map("Biscuits"->"Chocolate biscuits","Price"-
>"3.99$","Quantity"->3)
var cart3=Map("Cupcakes"->"Cupcakes","Price"->"4.99$","Quantity"->4)
println("Enter the item to be searched")
var cart4=scala.io.StdIn.readLine()
cart4 match
{
 case "Icecream"=>println(cart1)
 case "Biscuits"=>println(cart2)
 case "Cupcakes"=>println(cart3)
 case cart4=>s"$cart4 not present"
}
}
 def main(args:Array[String]):Unit={
exception_handling()
println("---------------------------")
file()
println("---------------------------")
println(a1.show(List(1,2,3,4,5)))
println(a2.show(List("test","check","123")))
println("----------------------------")
cart()
} }

Raw Text