Java Lab Manual

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 26

Brindavan College

Dwarakanagar, Bagalur Main Road, Yelahanka, Bengaluru-560063

www.brindavancollege.com

II Semester

JAVA PROGRAMMING LAB

CA-C9P

ACADEMIC
YEAR 2023 –
2024

LABORATORY MANUAL

PREPARED BY

Prof. Kumuda Priya


Assistant Professor
Dept. of BCA
Brindavan College
Dwarakanagar, Bagalur Main Road, Yelahanka, Bengaluru-560063
www.brindavancollege.com

Department of BCA

II Semester

MACHINE LEARNING LABORATORY

CA-C9P

ACADEMIC
YEAR 2023 –
2024

NAME OF THE STUDENT :

UNIVERSITY SEAT NO. :

BATCH :

PREPARED BY

Asst. Prof Kumuda Priya


BRINDAVAN COLLEGE
Department of BCA

LABORATORY CERTIFICATE
This is to certify that Mr. /Ms.

bearing USN of semester and section has

satisfactorily completed the course of experiments in Machine Learning Laboratory lab code CA-

C29L prescribed by the Bengaluru City University of this Institute for the academic year 2023–

2024.

MARKS

Maximum Marks Marks Obtained

Signature of F -In-Charge Head of the Department

Date:
MACHINE LEARNING LAB CA-C29L

PREFACE
Welcome to the fascinating world of machine learning! In this ever-evolving digital era, the
importance of machine learning cannot be overstated. Machine learning is a subset of artificial
intelligence in the field of computer science that often uses statistical techniques to give
computers the ability to "learn" (i.e., progressively improve performance on a specific task) with
data, without being explicitly programmed.

Course Outcome

1. Learn the basics of machine learning, understanding its uses, challenges, and various
applications.

2. Build practical data skills, covering data collection, analysis, visualization, and preparation.

3. Become skilled in using classification and regression algorithms, including selecting, training,
and evaluating models.

4. Dive into advanced clustering and specialized applications, using methods like K- Means,
DBSCAN, and others.

I acknowledge Asst. Prof. Nikita Singh for his valuable guidance and suggestions as per Revised
Blooms Taxonomy in preparing the lab manual.

Asst.Professor. Kumuda Priya


LABVIEW PROGRAMMING BASICS LAB

1. Write a simple java program to print the message “welcome to java”

2. Write a program to display the month of a year. Months of the year should be
held in an array.

3. Write a program to demonstrate a division by zero exception

4. Write a program to create a user defined exception say Pay Out of Bounds.

5. Write a java program to add two integers and two float numbers. When no
arguments are supplied, give a default value to calculate the sum. Use function
overloading.

6. Write a program to perform mathematical operations. Create a class called


AddSub with methods to add and subtract. Create another class called MulDiv
that extends from AddSub class to use the member data of the super class.
MulDiv should have methods to multiply and divide A main function should
access the methods and perform the mathematical operations.

7. Write a program with class variable that is available for all instances of a class.
Use static variable declaration. Observe the changes that occur in the object’s
member variable values.

8. Write a java program to create a student class with following attributes:


Enrollment_id: Name, Mark of sub1, Mark of sub2, mark of sub3, Total Marks.
Total of the three marks must be calculated only when the student passes in all
three subjects. The pass mark for each subject is 50. If a candidate fails in any
one of the subjects his total mark must be declaredas zero. Using this condition
write a constructor for this class. Write separate functions for accepting and
displaying student details. In the main method create an array of three student
objects and display the details.
9. In a college first year class are having the following attributesName of the class
(BCA, BCom, BSc), Name of the staff No of the students in the class, Array of
students in the class

10. Define a class called first year with above attributes and define a suitable
constructor. Also write a method called best Student () which process a first-
year object and return the student with the highest total mark. In the main
method define a first-year object and find the best student of this class

11. Write a Java program to define a class called employee with the name and date
of appointment. Create ten employee objects as an array and sort them as per
their date of appointment. ie, print them as per their seniority.

12. Create a package‘ student.Fulltime.BCA‘ in your current working directory


a. Create a default class student in the above package with the
following attributes: Name, age, sex. b. Have methods for
storing as well as displaying

13. Write a small program to catch Negative Array Size Exception. This exception
is caused when the array is initialized to negative values.

14. Write a program to handle Null Pointer Exception and use the “finally” method
to display a message to the user.

15. Write a program which create and displays a message on the window

16. Write a program to draw several shapes in the created window

17. Write a program to create an applet and draw grid lines

18. Write a program which creates a frame with two buttons father and mother.
When we click the father button the name of the father, his age and designation
must appear. When we click mother similar details of mother also appear.

19. Create a frame which displays your personal details with respect to a button
click

20. Create a simple applet which reveals the personal information of yours.

21. Write a program to move different shapes according to the arrow key pressed.

22. Write a java Program to create a window when we press M or m the window
displays Good Morning, A or a the window displays Good After Noon E or e
the window displays Good Evening, N or n the window displays Good Night

23. Demonstrate the various mouse handling events using suitable example.

24. Write a program to create menu bar and pull-down menus.

1.Write a simple java program to print “welcome to java”.

package p1;

public class simple {

public static void main(String[] args) {


System.out.println("welcome to java"); // TODO Auto-
generated method stub

Output:
welcome to java

2.Write a program to display the month of a year. Months of the year should be held in an
array.

package p1;

class mnth
{
public static void main(String [] args)
{
int n=11 ;
int index;
int days[]= {31,28,31,30,31,30,31,31,30,31,30,31};
String [] month
={"Jan","Feb","March","April","May","June","July","August","Sep","Oc
t","Nov","Dec "};

for( index=0;index<n;index++)
{
System.out.println(month[index]+"has"+days[index]+"days");

}
System.out.println(month[index]);
System.out.println("Thank you");
}
}

Output:

Janhas31days
Febhas28days
Marchhas31days
Aprilhas30days
Mayhas31days
Junehas30days
Julyhas31days
Augusthas31days
Sephas30days
Octhas31days
Novhas30days
Dec
Thank you

3.Write a program to demonstrate a division by zero exception.

package p1;

public class test33 {

public static void main(String[] args)


{
int a=10;
try
{
int n=a/0;

}
catch(ArithmeticException e)
{
System.out.println("division by zero is Arithmetic
exception");
}
int y=a/2;
System.out.println("the value of y if a is not divisible
by zero is"+y);

Output:
division by zero is Arithmetic exception
the value of y if a is not divisible by zero is5

4.Write a program to create a user defined exception say Pay Out of Bounds.

package p9;
import java.util.Scanner;

class PayOutOfBoundsException extends Exception


{
PayOutOfBoundsException(String msg)
{
System.out.println("Pay out of bounds exception"+msg);
}
}
public class UserDefinedExceptionDemo
{
public static void main(String args[]) throws
PayOutOfBoundsException
{
System.out.println("enter the employee salary");
Scanner sc=new Scanner(System.in);
int pay=sc.nextInt();
if(pay<10000||pay>50000)
{
throw new PayOutOfBoundsException("salary not in the
valid range");
}
else
System.out.println("Employee eligible for 30%
hike");
}
}

Output:
enter the employee salary
55000
Pay out of bounds exceptionsalary not in the valid range

5.Write a java program to add two integers and two float numbers. When no arguments are
supplied, give a default value to calculate the sum. Use function overloading.

package p9;

public class SimpleTesting


{
int add()
{
return(10+10);
}
int add(int a, int b) {
return (a+b);
}
float add(float a, float b,float c) {
return (a+b+c);
}
public static void main(String[] args) {
SimpleTesting test = new SimpleTesting();
System.out.println("by using default values sum
is"+test.add());
System.out.println("sum of two integer values (10 and 20)
is"+test.add(10,20));
System.out.println("sum of two float values (10.2 and 20.5
and 40.8) is"+test.add(10.2f,20.6f,40.8f));

}
}

Output:
by using default values sum is20
sum of two integer values (10 and 20) is30
sum of two float values (10.2 and 20.5 and 40.8) is71.6

6.Write a program to perform mathematical operations. Create a class called AddSub with
methods to add and subtract. Create another class called MulDiv that extends from AddSub
class to use the member data of the super class. MulDiv should have methods to multiply and
divide A main function should access the methods and perform the mathematical operations.

package p9;

class addsub
{

int num1;
int num2;

addsub(int n1, int n2)


{
num1 = n1;
num2 = n2;
}

int add()
{
return num1+num2;
}

int sub()
{
return num1-num2;
}
}

class multdiv extends addsub


{
public multdiv(int n1, int n2)
{
super(n1, n2);
}
int mul()
{
return num1*num2;
}
float div()
{
return num2/num1;
}
public void display()
{
System.out.println("Number 1 :" + num1);
System.out.println("Number 2 :" + num2);

public class adsb


{ public static void main(String arg[])
{
addsub r1=new addsub(50,20);
int ad = r1.add();
int sb = r1.sub();
System.out.println("Addition =" +ad);
System.out.println("Subtraction =" +sb);
multdiv r2 =new multdiv(4,20);
int ml = r2.mul();
float dv =r2.div();
System.out.println("Multiply =" +ml);
System.out.println("Division =" +dv);}

Output:

Addition =70
Subtraction =30
Multiply =80
Division =5.0

7.Write a program with class variable that is available for all instances of a class. Use static
variable declaration. Observe the changes that occur in the object’s member variable values.
package p1;

public class test7 {


int n=8;
static int a=10;
test7()
{
n++;
System.out.println(n);
a++;
System.out.println(a);
}

public static void main(String[] args) {


test7 t1=new test7();
test7 t2=new test7();
// TODO Auto-generated method stub
}

Output:
9
11
9
12

8.Write a java program to create a student class with following attributes: Enrollment_id:
Name, Mark of sub1, Mark of sub2, mark of sub3, Total Marks. Total of the three marks
must be calculated only when the student passes in all three subjects. The pass mark for each
subject is 50. If a candidate fails in any one of the subjects his total mark must be declaredas
zero. Using this condition write a constructor for this class. Write separate functions for
accepting and displaying student details. In the main method create an array of three student
objects and display the details.

package p1;
import java.util.*;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class PROGRAM4

public static void main(String[] args)

int n, total = 0, flag=0;

String name;
int Enrollment_id;

try{
BufferedReader reader =new BufferedReader(new
InputStreamReader(System.in));
System.out.println("Enter student Name : ");
System.out.println("Enter enrollment no : ");
Scanner sc = new Scanner(System.in);

name=reader.readLine();
Enrollment_id=sc.nextInt();

System.out.print("Marks of 3 subject:");

int marks[] = new int[3];

System.out.println("Enter marks out of 100:");


for(int i = 0; i < 3; i++)

marks[i] = sc.nextInt();
if(marks[i]<50)
flag=1;

total = total + marks[i];

}
studen1 s1=new studen1(name,marks[0],marks[1],marks[2]);

if(flag==1){

total=0;
System.out.println("student is Failed in one of subject total mark
is Reduced to Zero : "+total);

}
else
{
System.out.println("student Optained total marks : "+total);
}

}catch(Exception e){
}

}
}

class studen1{

public int m1,m2,m3;


String name;
public int Total;

public studen1(String name,int m1,int m2,int m3){


this.m1=m1;
this.m2=m2;
this.m3=m3;
this.name=name;

Output:
Enter student Name :
Enter enrollment no :
priya
1001
Marks of 3 subject:Enter marks out of 100:
10
20
20
student is Failed in one of subject total mark is Reduced to Zero : 0
Enter student Name :
Enter enrollment no :
priya
1001
Marks of 3 subject:Enter marks out of 100:
78
89
90
student Optained total marks : 257

9.In a college first year class are having the following attributesName of the class (BCA,
BCom, BSc), Name of the staff No of the students in the class, Array of students in the class

package p1;
import java.io.*;
import java.lang.*;
import java.util.*;

class Student
{
int total;
String name,department;
public Student(int total,String name,String department)
{
this.total=total;
this.name=name;
this.department=department;
}

public String toString()


{
return this.total+" "+this.name+" "+this.department;
}
}

class Sortbyname implements Comparator< Student>


{
public int compare(Student a,Student b)
{
return a.name.compareTo(b.name);
}
}

class Beststudent implements Comparator< Student>


{
public int compare(Student a,Student b)
{
return b.total-a.total;
}
}

class Program5new
{
public static void main (String[]args)
{

ArrayList< Student>ar=new ArrayList< Student>();

ar.add(new Student(340,"Anil","BCA"));
ar.add(new Student(450,"Mayank","BCA"));
ar.add(new Student(360,"Anshul","BCA"));
ArrayList< Student>arbsc=new ArrayList< Student>();
arbsc.add(new Student(230,"Solanki","BSC"));
arbsc.add(new Student(411,"Aggarwal","BSC"));
arbsc.add(new Student(311,"Aggarwal","BSC"));

ArrayList< Student>arbcom=new ArrayList< Student>();


arbcom.add(new Student(220,"Solanki","BCOM"));
arbcom.add(new Student(431,"Aggarwal","BCOM"));
arbcom.add(new Student(141,"nav","BCOM"));

System.out.println("Unsorted");
for(int i=0;i< ar.size();i++)
System.out.println(ar.get(i));

for(int i=0;i< arbsc.size();i++)


System.out.println(arbsc.get(i));

for(int i=0;i< arbcom.size();i++)


System.out.println(arbcom.get(i));

Collections.sort(ar,new Beststudent());
Collections.sort(arbsc,new Beststudent());
Collections.sort(arbcom,new Beststudent());
System.out.println("Best student is:");

System.out.println("High Score:");
System.out.println(" "+ar.get(0));
System.out.println(" "+arbsc.get(0));
System.out.println(" "+arbcom.get(0));

Collections.sort(ar,new Sortbyname());
System.out.println("\nSorted by name");
for(int i=0;i< ar.size();i++)
System.out.println(ar.get(i));
}
}
Output:
Unsorted
340 Anil BCA
450 Mayank BCA
360 Anshul BCA
230 Solanki BSC
411 Aggarwal BSC
311 Aggarwal BSC
220 Solanki BCOM
431 Aggarwal BCOM
141 nav BCOM
Best student is:
High Score:
450 Mayank BCA
411 Aggarwal BSC
431 Aggarwal BCOM

Sorted by name
340 Anil BCA
360 Anshul BCA
450 Mayank BCA
10.Define a class called first year with above attributes and define a suitable constructor. Also
write a method called best Student () which process a first-year object and return the student
with the highest total mark. In the main method define a first-year object and find the best
student of this class

package p1;
import java.util.*;
import java.util.Scanner;

class FirstYear
{
String classname;
String classteacher;
int stdcount;
int stdmarks[]=new int[50];
Scanner sc=new Scanner(System.in);
String[] stdnames=new String[50];

public FirstYear()
{

System.out.println("please enter the class name");


classname=sc.nextLine();
System.out.println("please enter the class teacher name");

classteacher=sc.next();
System.out.println("please enter the total number of students in the
class");
stdcount=sc.nextInt();
System.out.println("please enter the names of all the students of the
class");
for(int i=0;i<stdcount;i++)
stdnames[i]=sc.next();
System.out.println("please enter the marks of all the students of the
class");
for(int i=0;i<stdcount;i++)
stdmarks[i]=sc.nextInt();

public void beststudent()


{
int best=0;
int k=-1;
for(int i=0;i<stdcount;i++)
{
if(stdmarks[i]>best)
{
best=stdmarks[i];
k=i;
}

}
System.out.println("The best student is " +stdnames[k]);
}
}
public class stu1
{

public static void main(String[] args) {


FirstYear fy=new FirstYear();
fy.beststudent();
// TODO Auto-generated method stub

Output:
please enter the class name
bca
please enter the class teacher name
priya
please enter the total number of students in the class
2
please enter the names of all the students of the class
rahul
vikas
please enter the marks of all the students of the class
345
678
The best student is vikas

11.Write a Java program to define a class called employee with the name and date of
appointment. Create ten employee objects as an array and sort them as per their date of
appointment. ie, print them as per their seniority.

package p1;
import java.util.*;

class employee

String name;

Date appdate;

public employee(String nm,Date apdt)

name=nm;

appdate=apdt;

public void display()

System.out.println("employee name:"+name+" appoinment date:"+ appdate.getDate()


+"/" +appdate.getMonth()+"/"+appdate.getYear());

class program6

{
public static void main(String as[])

employee emp[]=new employee[5];

emp[0]=new employee("shaha PD",new Date(1999,05,22));

emp[1]=new employee("Patil AS",new Date(2000,01,12));


emp[2]=new employee("Phadake PV",new Date(2009,04,25));
emp[3]=new employee("Shinde SS",new Date(2005,02,19));

emp[4]=new employee("Shrivastav RT",new Date(2010,01,01));

System.out.println("List of employees");

for(int i=0;i< emp.length;i++)

emp[i].display();

for(int i=0;i< emp.length;i++)

for(int j=0;j< emp.length;j++)

if(emp[i].appdate.after(emp[j].appdate))

employee t=emp[i];

emp[i]=emp[j];

emp[j]=t;

System.out.println("List of employees seniority wise");

for(int i=0;i< emp.length;i++)

emp[i].display();

Output:
List of employees
employee name:shaha PD appoinment date:22/5/1999
employee name:Patil AS appoinment date:12/1/2000
employee name:Phadake PV appoinment date:25/4/2009
employee name:Shinde SS appoinment date:19/2/2005
employee name:Shrivastav RT appoinment date:1/1/2010
List of employees seniority wise
employee name:Shrivastav RT appoinment date:1/1/2010
employee name:Phadake PV appoinment date:25/4/2009
employee name:Shinde SS appoinment date:19/2/2005
employee name:Patil AS appoinment date:12/1/2000
employee name:shaha PD appoinment date:22/5/1999

12.Create a package‘ student.Fulltime.BCA‘ in your current working directory


a. Create a default class student in the above package with the
following attributes: Name, age, sex.
b. Have methods for storing as well as displaying

package studentFulltimeBCA;
import java.util.Scanner;

import p1.BCAStudent;

public class BCAStudent


{
String name,sex;
int age;
Scanner sc=new Scanner(System.in);
public void getdata()
{
System.out.println("student name");
name=sc.nextLine();
System.out.println("student sex");
sex=sc.nextLine();
System.out.println("student age");
age=sc.nextInt();

}
public void display()
{
System.out.println("student details are");
System.out.println("student name"+name);
System.out.println("student sex"+sex);
System.out.println("student age"+age);
}

public static void main(String args[])


{
BCAStudent bs=new BCAStudent();
bs.getdata();
bs.display();
}
}

Output:
student name
yashu
student sex
female
student age
22
student details are
student nameyashu
student sexfemale
student age22

13Write a small program to catch Negative Array Size Exception. This exception is caused
when the array is initialized to negative values.

package studentFulltimeBCA;

class programb1

public static void main(String as[])

int arrSize = -8;


try {

int[] myArray = new int[arrSize];

} catch (NegativeArraySizeException ex) {

System.out.println("Can't create array of negative


size");
}

}
}

Output:

Can't create array of negative size

14.Write a program to handle Null Pointer Exception and use the “finally” method to display
a message to the user.

package p1;

public class Npee {

public static void main(String[] args)


{
try
{

String str="abc";
System.out.println(str.length());
String str1=null;
if (str1!=null)
{
System.out.println(str1.length());
}
}
catch(NullPointerException e)
{
System.out.println(e);
}
finally
{
System.out.println("Null pointer exception is caught
in catch block");
}
}

}
Output:

3
Null pointer exception is caught in catch block

15.Write a program which create and displays a message on the window

package p1;

import javax.swing.*;

import java.awt.event.*;

import java.awt.*;

class Programb2 implements ActionListener

//Function to create the original frame

public static void main(String args[])

//Create a frame

JFrame frame = new JFrame("Original Frame");

frame.setSize(300,300);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Create an object

Programb2 obj = new Programb2();

//Create a button to view message


JButton button = new JButton("View Message");

frame.add(button);

button.addActionListener(obj);

//View the frame

frame.setVisible(true);

public void actionPerformed(ActionEvent e)

JFrame sub_frame = new JFrame("Sub Frame");

sub_frame.setSize(200,200);

Window win = new Window(sub_frame);


Canvas c = new Canvas();

c.setBackground(Color.RED);

JLabel label = new JLabel("!!! Hello !!!");

win.add(label);
win.add(c);
win.show();

sub_frame.add(c);

sub_frame.setVisible(true);

Output:

16.Write a program to draw several shapes in the created window


import java.awt.*;
import java.applet.*;

public class shap extends Applet


{
public void paint(Graphics g)
{
g.drawLine(25,25,100,25);
g.drawRect(25,40,100,50);

g.fillRect(145,40,100,50);

g.drawRect(265,40,50,50);

g.drawRoundRect(25,125,100,50,15,15);

g.fillRoundRect(145,125,100,50,15,15);

g.drawOval(25,205,100,50);

g.fillOval(145,205,100,50);

g.drawOval(265,205,50,50);

g.draw3DRect(25,280,100,50,true);

g.draw3DRect(145,280,100,50,false);

g.drawArc(25,345,100,50,25,75);

g.drawArc(145,345,100,50,125,75);
}
}
Output:

17.Write a program to create an applet and draw grid lines

import java.awt.*;
import java.applet.*;

public class Program17 extends Applet {


public void paint(Graphics G) {
int i, j, x, y = 20;
for (i = 1; i < 5; i++) {
x = 20;
for (j = 1; j < 5; j++) {
G.drawRect(x, y, 40, 40);
x = x + 20;
}
y = y + 20;

}
}
}
Output:

18.Write a program which creates a frame with two buttons father and mother. When we
click the father button the name of the father, his age and designation must appear. When we
click mother similar details of mother also appear.

package p1;

import java.awt.event.*;
import javax.swing.*;

public class programB4 {


public static void main(String[] args) {

JFrame f=new JFrame("PROGRAM B4");

final JTextArea tf=new JTextArea ();


tf.setBounds(50,50, 250,150);

JButton b=new JButton("FATHER");


b.setBounds(50,250,95,30);

b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
tf.setText(" FATHER AGE= 40 \n designation = Manager.");
}
});

JButton b2=new JButton("Mother");


b2.setBounds(150,250,95,30);

b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
tf.setText(" Mother AGE= 35 \n designation = teacher.");
}
});

f.add(tf);
f.add(b);
f.add(b2);
f.setSize(500,500);
f.setLayout(null);
f.setVisible(true);
}
}

Output:

19.Create a frame which displays your personal details with respect to a button click

20.Create a simple applet which reveals the personal information of yours.

21.Write a program to move different shapes according to the arrow key pressed.

22.Write a java Program to create a window when we press M or m the window displays
Good Morning, A or a the window displays Good After Noon E or e the window displays
Good Evening, N or n the window displays Good Night

23.Demonstrate the various mouse handling events using suitable example.

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class MouseApplet extends Applet implements MouseListener
{
String msg="Initial Message";
public void init()
{
addMouseListener(this);
}
public void mouseClicked(MouseEvent me)
{
msg = "Mouse Clicked";
repaint();
}
public void mousePressed(MouseEvent me)
{
msg = "Mouse Pressed";
repaint();
}
public void mouseReleased(MouseEvent me)
{
msg = "Mouse Released";
repaint();
}
public void mouseEntered(MouseEvent me)
{
msg = "Mouse Entered";
repaint();
}
public void mouseExited(MouseEvent me)
{
msg = "Mouse Exited";
repaint();
}
public void paint(Graphics g)
{
g.drawString(msg,20,20);
}
}
Output:

24.Write a program to create menu bar and pull-down menus.

package p1;
import javax.swing.*;
class MenuExample
{
JMenu menu, submenu;
JMenuItem i1, i2, i3, i4, i5;
MenuExample(){
JFrame f= new JFrame("Menu and MenuItem Example");
JMenuBar mb=new JMenuBar();
menu=new JMenu("Menu");
submenu=new JMenu("Sub Menu");
i1=new JMenuItem("Item 1");
i2=new JMenuItem("Item 2");
i3=new JMenuItem("Item 3");
i4=new JMenuItem("Item 4");
i5=new JMenuItem("Item 5");
menu.add(i1); menu.add(i2); menu.add(i3);
submenu.add(i4); submenu.add(i5);
menu.add(submenu);
mb.add(menu);
f.setJMenuBar(mb);
f.setSize(400,400);
f.setLayout(null);
f.setVisible(true);
}
public static void main(String args[])
{
new MenuExample();
}}

Output:

You might also like