Tải bản đầy đủ (.pdf) (57 trang)

NGÔN NGỮ JAVA, ĐÁP ÁN THỰC HÀNH java (Công nghệ thông tin)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (382.34 KB, 57 trang )

KHOA CÔNG NGHỆ THÔNG TIN
LỚP MẠNG MÁY TÍNH K10B
………..……..

MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG JAVA
ĐÁP ÁN BÀI THỰC HÀNH

Thái Nguyên, tháng 9 năm 2013


Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

CHƯƠNG 2: NGÔN NGỮ JAVA
Bài 1
Cài đặt JDK 1.6 và cài đặt NetBean 7.1
Thực hiện tạo mới 1 project java in ra màn hình kết quả dòng chữ “xin chào” trong
hàm main()
Làm quen với các thành phần NetBean 7.1
Bài 2 Khai báo (import) lớp Scanner trong gói java.util.Scanner sử dụng phương
thức readLine() thực hiện trong hàm main nhập vào một xâu và in xâu vừa nhập ra màn
hình.
Code:
package bai02;
import java.util.Scanner;
public class Bai02 {
public static void main(String[] args) {
Scanner nhap=new Scanner(System.in);
System.out.print("Nhap xau: ");
String xau=nhap.nextLine();


System.out.println("Xau vua nhap la: "+xau);
}
}
Bài 3 Sử dụng lớp Scanner trong gói java.util.Scanner sử dụng phương thức nextInt()
thực hiện trong hàm main nhập vào hai số a, b in kết quả tổng a và b ra màn hình.
Tương tự sử dụng với các lớp nextFloat(), nextDouble()….. để nhập các số kiểu
float, double…
Code:
package bai03;
Biên soạn: Thanh Cảnh

-1-


Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

import java.util.Scanner;
public class Bai03 {
public static void main(String[] args) {
Scanner nhap=new Scanner(System.in);
int a,b;
System.out.print("Nhap a: ");
a=nhap.nextInt();
System.out.print("Nhap b: ");
b=nhap.nextInt();
System.out.println("Tong "+a+"+"+b+"="+(a+b));
}
}

Bài 4 Xây dựng lớp Diem với các thuộc tính double x,y tương ứng là hai giá trị
hoành độ và tung độ và các phương thức:
Các phương thức tạo lập:
+public Diem(){}
+public Diem(double x,double y){x=x1;y=y1}
Và các phương thức
+public void inTTDiem(){ // in giá trị x,y ra màn hình }
+public double tinhKhoangCach(Diem d) {tính khoảng cách giữa điểm hiện thời
và đối số d}
Cài đặt lớp Main thực hiện tạo ra hai điểm D1=new Diem(3,7); D2= new Diem(9,3)
và in khoảng cách của hai điểm trên.

Code:
//Class Diem
Biên soạn: Thanh Cảnh

-2-


Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

package bai04;
public class Diem {
double x,y,x1,y1;
public Diem(){}
public Diem(double x1,double y1){x=x1;y=y1;}
public void inTTDiem(){
System.out.println("x: "+x);

System.out.println("y: "+y);
}
public double tinhKhoangCach(Diem d)
{
double kc;
return kc=Math.sqrt((x-d.x)*(x-d.x)+(y-d.y)*(y-d.y));
}
}
//Hàm main
package bai04;
public class Bai04 {
public static void main(String[] args) {
Diem D1=new Diem(3,7);
Diem D2=new Diem(9,3);
System.out.println("Diem D1: ");
D1.inTTDiem();
System.out.println("Diem D2: ");
D2.inTTDiem();
Biên soạn: Thanh Cảnh

-3-


Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

System.out.println("Khoang cach D1, D2 la: "+D1.tinhKhoangCach(D2));
}
}

Bài 5
1. Xây dựng lớp SoPhuc có các thuộc tính riêng gồm: phanThuc, phanAo kiểu
double; và có:
+ Các toán tử tạo lập : SoPhuc(), SoPhuc(float pt, float pa)
+ Phương thức nhập vào một số phức: : void nhapSoPhuc()
+ Phương thức hiển thị một số phức: void inSoPhuc()
+ Phương thức cộng hai số phức : SoPhuc congSoPhuc(SoPhuc sp)
+ Phương thức nhan hai số phức: SoPhuc nhanSoPhuc(SoPhuc sp)
2.Cài đặt chương trình(lớp Main) thực hiện : Nhập vào hai số phức A và B, sau đó
tính số phức tổng C1=A.congSoPhuc(B), nhân C=A.nhanSoPhuc(B) rồi hiển thị kết quả
ra màn hình
Tổng:

(a + b.i) + (c + d.i) = (a + c) + (b + d).i

Tích:

(a + b.i)(c + d.i) = (a.c - b.d) + (b.c + a.d).i

Chia :

Code:
//Class SoPhuc
package bai05;
import java.util.Scanner;
public class SoPhuc {
double phanthuc,phanao;
Biên soạn: Thanh Cảnh

-4-



Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

public SoPhuc() {}
public SoPhuc(double pt,double pa)
{
phanthuc= pt;
phanao= pa;
}
public void nhapsophuc(){
Scanner sophuc= new Scanner(System.in);
System.out.print("nhap vao phan thuc: ");
float pt=sophuc.nextFloat();
phanthuc=pt;
System.out.print("nhap vao phan ao: ");
float pa=sophuc.nextFloat();
phanao=pa;
}
public void insophuc()
{
System.out.println("so phuc : "+phanthuc+"+"+phanao+"i");
}
public SoPhuc congSoPhuc(SoPhuc sp)
{
SoPhuc tp=new SoPhuc();
tp.phanthuc=phanthuc+sp.phanthuc;
tp.phanao=phanao+sp.phanao;

return tp;
Biên soạn: Thanh Cảnh

-5-


Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

}
public SoPhuc nhanSoPhuc(SoPhuc sp)
{
SoPhuc tp=new SoPhuc();
tp.phanthuc=phanthuc*sp.phanthuc - phanao*sp.phanao;
tp.phanao=phanao*sp.phanthuc + phanthuc*sp.phanao;
return tp;
}
}
//Hàm main
package bai05;
public class Bai05 {
public static void main(String[] args) {
SoPhuc A=new SoPhuc();
SoPhuc B=new SoPhuc();
System.out.println("nhap cho so phuc A:");
A.nhapsophuc();
System.out.println("nhap cho so phuc B:");
B.nhapsophuc();
SoPhuc C1=A.congSoPhuc(B);

SoPhuc C=A.nhanSoPhuc(B);
System.out.print("tich 2 so phuc la ");
C.insophuc();
System.out.print("tong 2 so phuc la ");
C1.insophuc();
Biên soạn: Thanh Cảnh

-6-


Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

}
}
Bài 6
Thực hiện nhập vào ba điểm toán, lý, hóa kiểu float tính diểm trung bình
(toán+lý+hóa)/3 lưu vào 1 bến hay sử dụng câu lệnh if kết hợp với các toán tử quan hệ
và các phép toán logic in ra xếp loại theo điểm trung bình
Code:
//Class Diem
package bai06;
import java.util.Scanner;
public class Diem {
float dtoan,dly,dhoa;
public Diem(){}
public Diem(float toan,float ly,float hoa)
{
dtoan=toan;

dly=ly;
dhoa=hoa;
}
public void nhapdiem()
{
Scanner diem= new Scanner(System.in);
System.out.print("nhap vao diem toan: ");
float toan=diem.nextFloat();
dtoan=toan;
Biên soạn: Thanh Cảnh

-7-


Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

System.out.print("nhap vao diem ly: ");
float ly=diem.nextFloat();
dly=ly;
System.out.print("nhap vao diem hoa: ");
float hoa=diem.nextFloat();
dhoa=hoa;
}
public float diemtrungbinh()
{
return ((dtoan+dly+dhoa)/3);
}
}

//Hàm main
package bai06;
public class Bai06 {
public static void main(String[] args) {
Diem SV1=new Diem();
System.out.println("nhap vao diem cho SV: ");
SV1.nhapdiem();
System.out.println("diem trung binh cua SV la: "+SV1.diemtrungbinh());
System.out.print("Xep loai: ");
if (SV1.diemtrungbinh()>8.5)
System.out.println("GIOI");
else
if (SV1.diemtrungbinh()>=7 && SV1.diemtrungbinh()<8.5)
Biên soạn: Thanh Cảnh

-8-


Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

System.out.println("KHA");
else
if (SV1.diemtrungbinh()>=5.5 && SV1.diemtrungbinh()<7)
System.out.println("TB");
else
System.out.println("YEU");
}
}

BÀI THỰC HÀNH CHƯƠNG 3
Bài 7
Xây dựng lớp Nguoi gồm có các thuộc tính chung : hoTen, diaChi, namSinh và các
phương thức:
+Các toán tử tạo lập : public Nguoi(){}, public Nguoi(String ht,String dc,int ns){//
nội dung tạo lập }
+Phương thức: public void nhap TT(){// nhập thông tin cho Nguoi}
+Phương thức: Public void inTT(){//in thông tin cho Nguoi}, public void
nhapTT(){// nhập thông tin từ bàn phím cho các thông tin của Nguoi },
Xây dựng lớp NhanSu kế thừa từ lớp Nguoi và có thêm các thuộc tính:
maNhanSu,heSochucVu, heSoLuong và thuộc tính tĩnh: scác phương thức: thực hiện
viết đè các phương thức: tatic int luongCoBan và nhapTTNhanSu(),inTTNhanSu( )
phươn thức tĩnh static void setLuongCoBan(int lcb){luongCoBan=lcb}
public double tinhLuong(){ }
theo tiêu chí lương=(heSoLuong+heSoChucVu)*luongCoBanheSoLuong*luongCoBan*5%,
Tại lớp lớp Main tạo ra hai đối tượng thuộc lớp Nguoi, hai đối tượng thuộc lớp
NhanSu nhập thông tin luongCoBan cho lớp NhanSu và nhập,in thông tin của 4 đối
tượng trên
Code:
Biên soạn: Thanh Cảnh

-9-


Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

//Class Nguoi
package bai07;

import java.util.Scanner;
public class Nguoi
{
Scanner nhap=new Scanner(System.in);
String hoTen,diaChi;
int namSinh;
public Nguoi(){}
public Nguoi(String hoten,String diachi,int namsinh)
{
hoTen=hoten;diaChi=diachi;namSinh=namsinh;
}
public void nhapTT()
{
System.out.print("nhap vao ho ten: ");
hoTen=nhap.nextLine();
System.out.print("nhap vao dia chi: ");
diaChi=nhap.nextLine();
System.out.print("nhap vao nam sinh: ");
namSinh=nhap.nextInt();
}
public void inTT()
{
System.out.println(" ho ten | dia chi | nam sinh ");
Biên soạn: Thanh Cảnh

- 10 -


Lập trình hướng đối tượng Java


GV: Tô Hữu Nguyên

System.out.println(" "+hoTen+" | "+diaChi+" | "+namSinh);
}
}
//Class NhanSu
package bai07;
import java.util.Scanner;
public class NhanSu extends Nguoi
{
String MNS;
float HeSoChucVu,HeSoLuong;
static int LuongCoBan;
public NhanSu(){}
static void setLCB(int lcb)
{
LuongCoBan=lcb;
}
public double tinhluong()
{
return ((HeSoLuong+HeSoChucVu)*LuongCoBanHeSoLuong*LuongCoBan*5/100);
}
public void nhapTTNS()
{
Scanner nhapNS=new Scanner(System.in);
System.out.print("nhap ma nhan su: ");
Biên soạn: Thanh Cảnh

- 11 -



Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

MNS=nhapNS.nextLine();
super.nhapTT();
System.out.print("nhap he so chuc vu: ");
HeSoChucVu=nhap.nextInt();
System.out.print("nhap he so luong: ");
HeSoLuong=nhap.nextInt();
}
public void inTTNS(){
System.out.println(" ma nhan su | he so chuc vu | he so luong ");
System.out.println(" "+MNS+" | "+HeSoChucVu+" | "+HeSoLuong);
super.inTT();
}
}
Bài 8
Xây dựng lớp Nguoi gồm có các thuộc tính chung : hoTen, diaChi, namSinh và các
phương thức:
+Các toán tử tạo lập : public Nguoi(){}, public Nguoi(String ht,String dc,int ns){//
nội dung tạo lập }
+Phương thức: public void nhap TT(){// nhập thông tin cho Nguoi}
+Phương thức: Public void inTT(){//in thông tin cho Nguoi}, public void
nhapTT(){// nhập thông tin từ bàn phím cho các thông tin của Nguoi }
Xây dựng lớp SinhVien kế thừa từ lớp người thêm các thuộc tính maSV,
tenLop,diem1,diem2,diem3 và các phương thức:
+Các toán tử tạo lập.
+Tính điểm TB: public float tinhDiemTrungBinh(){};

+viết đè hai phương thức nhapTT(), inTT()
Biên soạn: Thanh Cảnh

- 12 -


Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

Tại lớp lớp Main tạo ra một đối tượng thuộc lớp Nguoi, một đối tượng thuộc lớp
SinhVien nhập thông tin diem1,diem2,diem3 cho lớp SinhVien và nhập,in thông tin của
2 đối tượng trên.
Code:
//Class Nguoi
package bai08;
import java.util.Scanner;
public class Nguoi {
String hoTen,diaChi;
int namSinh;
public Nguoi(){}
public Nguoi(String hoten,String diachi,int namsinh)
{
hoTen=hoten;diaChi=diachi;namSinh=namsinh;
}
public void nhapTT()
{
Scanner input=new Scanner(System.in);
System.out.print("nhap vao ho ten: ");
hoTen=input.nextLine();

System.out.print("nhap vao dia chi:");
diaChi=input.nextLine();
System.out.print("nhap nam sinh: ");
namSinh=input.nextInt();
}
Biên soạn: Thanh Cảnh

- 13 -


Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

public void inTT(){
System.out.println(" ho ten | dia chi | nam sinh");
System.out.println(" "+hoTen+" | "+" "+diaChi+" | "+" "+namSinh);
}
}
//Class SinhVien
package bai08;
import java.util.Scanner;
public class SinhVien extends Nguoi{
String MSV,tenLop;
float diem1,diem2,diem3;
public SinhVien(){}
public float tinhDiemTrungBinh()
{
return (diem1+diem2+diem3)/3;
}

public void nhapTT(){
Scanner input=new Scanner(System.in);
super.nhapTT();
System.out.print("nhap ma sinh vien:");
MSV=input.nextLine();
System.out.print("nhap ten lop:");
tenLop=input.nextLine();
System.out.print("nhap vao 3 diem:");
diem1=input.nextFloat();
Biên soạn: Thanh Cảnh

- 14 -


Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

diem2=input.nextFloat();
diem3=input.nextFloat();
}
public void inTT()
{
super.inTT();
System.out.println(" MSV | lop | diem 1 | diem 2 | diem 3");
System.out.println(" "+MSV+" | "+tenLop+" | "+diem1+" | "+diem2+" |
"+diem3);
}
}
Bài 9

Xây dựng lớp ToanHoc với phương thức tĩnh(stattic) sau:
+Kiểm tra xem một số nguyên k có phải là số nguyên tố hay không ?
public static boolean kiemtraNguyenTo(int k)
+Hàm tính phần tử thứ n của dãy Fibonaci: public static int tinhFibo(int n)
Với công thức truy hồi được tính như sau:

Code:
//Class ToanHoc
package bai09;
public class ToanHoc {
public static boolean kiemtraNguyenTo(int x)
Biên soạn: Thanh Cảnh

- 15 -


Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

{
if (x<2) return false;
for (int i=2;i<=Math.sqrt(x);i++)
if (x%i==0)
return false;
return true;
}
public static int tinhFibo(int n)
{
if (n==0 | n==1) return 1;

if (n>1)
return tinhFibo(n-1)+tinhFibo(n-2);
return 0;
}
}
//Hàm main
package bai09;
import java.util.Scanner;
public class Bai09 {
public static void main(String[] args) {
int ngto=6;
if (ToanHoc.kiemtraNguyenTo(ngto))
System.out.println("so "+ngto+" la so nguyen to");
else
System.out.println("so "+ngto+" khong la so nguyen to");
System.out.print("nhap n:");
Scanner nhap=new Scanner(System.in);
Biên soạn: Thanh Cảnh

- 16 -


Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

int n=nhap.nextInt();
System.out.println("so Fibonaxi thu "+n+" la: "+ToanHoc.tinhFibo(n));
}
}

Bài 10
Xây dựng lớp ToanHoc với các phương thức tĩnh(static) sau:
+ Tính tổng dãy
S

1 2
n 1
  ..... 
2 3
n

public static double tinhTong(int n)
+Kiểm tra xem một số nguyên k có phải là số nguyên tố hay không ?
public static boolean kiemtraNguyenTo(int k)
Code:
//Class ToanHoc
package bai10;
public class ToanHoc {
public static float TinhTong(int n)
{
int i;
float s,s1,s2;
s=0;
for(i=2;i<=n;i++)
{
s+=(float)(i-1)/i;
}
return s;
}
Biên soạn: Thanh Cảnh


- 17 -


Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

public static boolean NgTo(int n)
{
if(n==1)
return false;
for(int i=2;i<=Math.sqrt(n);i++)
{
if (n%i==0)
return false;
}
return true;
}
}
//Hàm main
package bai10;
import java.util.Scanner;
public class Bai10 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int n;
System.out.println("Nhap n>=2:");
do
{

System.out.print("n= ");
n=input.nextInt();
}
while (n<2);
System.out.println("Tong cua day la: "+ToanHoc.TinhTong(n));
Biên soạn: Thanh Cảnh

- 18 -


Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

if (ToanHoc.NgTo(n))
System.out.println("So "+n+" la so nguyen to");
else
System.out.println("So "+n+" khong phai la so nguyen to");
}
}
Bài 11 Xây dựng lớp ToanHoc với các phương thức tĩnh(static) sau:
+ Tính tổng dãy
S

n!
1!
2!
 2
 .....  n
2

xk x k
x  ( 1) n 1 .k n

public static double tinhTong(int n)
Code:
//Class ToanHoc
package bai11;
public class ToanHoc {
public static int GiaiThua(int n)
{
if((n==0)|(n==1))
return 1;
else
return n*GiaiThua(n-1);
}
public static double SoMu(double x,int n)
{
if(n==0)
return 0;
else
Biên soạn: Thanh Cảnh

- 19 -


Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

{

if(n==1)
{
return x;
}
else
{
if(n<0)
return SoMu(x,n+1)/x;
else
return x*SoMu(x,n-1);
}
}
}
public static double TinhTong(int n,double x, double k)
{
double Tong=0;
for(int i=1;i<=n;i++)
Tong=Tong+(GiaiThua(i)/(SoMu(x,i)+(SoMu(-1,i+1)*SoMu(k,i))));
return Tong;
}
}
//Hàm main
package bai11;
import java.util.Scanner;
public class Bai11 {
public static void main(String[] args) {
Biên soạn: Thanh Cảnh

- 20 -



Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

Scanner nhap=new Scanner(System.in);
System.out.print("Nhap x: ");
double x=nhap.nextDouble();
System.out.print("Nhap k: ");
double k=nhap.nextDouble();
System.out.print("Nhap so phan tu n: ");
int n=nhap.nextInt();
System.out.println("Tong la: "+ToanHoc.TinhTong(n,x,k));
}
}
Bài 12 Xây dựng lớp ToanHoc với các phương thức tĩnh(static) sau:
+ Tính tổng dãy
S=1+2-3+……(-1)n+1.n
public static double tinhTong(int n)
+ Kiểm tra xem một nguyên n có phải là số hoàn hảo hay không ?
public static boolean kiemtraHoanHao(int n)
Code:
//Class ToanHoc
package bai12;
public class ToanHoc {
public static float TinhTong(int n)
{
int s,dau;
s=1;
for (int i=2;i<=n;i++)

{
if (i%2==0)
Biên soạn: Thanh Cảnh

- 21 -


Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

dau=1;
else
dau=-1;
s+=dau*i;
}
return s;
}
public static boolean SoHH(int n)
{
if(n==1|n==2)
return false;
int s=0;
for (int i=1;i<=n/2;i++)
if (n%i==0)
s+=i;
if (s==n)
return true;
return false;
}

}
//Hàm main
package bai12;
import java.util.Scanner;
public class Bai12 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.print("Nhap n= ");
Biên soạn: Thanh Cảnh

- 22 -


Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

int n=input.nextInt();
System.out.println("Tong cua day la: "+ToanHoc.TinhTong(n));
if (ToanHoc.SoHH(n))
System.out.println("So "+n+" la so hoan hao");
else
System.out.println("So "+n+" khong phai la so hoan hao");
}
}
Bài 13 Xây dựng lớp ToanHoc với các phương thức tĩnh(static) sau:
+ Tính tổng dãy:
S=1!+2!+3!+……+n!
public static double tinhTong(int n)
+Hàm tính giá trị trung bình của mảng:

public static double tinhTrungBinh(int M[])

Code:
//Class ToanHoc
package bai13;
public class ToanHoc {
public static long TinhTong(int n)
{
int s=1;
long tong=0;
for (int i=1;i<=n;i++)
{
s*=i;
tong+=s;
Biên soạn: Thanh Cảnh

- 23 -


Lập trình hướng đối tượng Java

GV: Tô Hữu Nguyên

}
return tong;
}
public static double TB(int M[])
{
double tong=0;
for(int i=0;i

tong+=M[i];
return tong/M.length;
}
}
//Hàm main
package bai13;
import java.util.Scanner;
public class Bai13 {
public static void main(String[] args) {
ToanHoc a=new ToanHoc();
Scanner input=new Scanner(System.in);
System.out.print("Nhap n= ");
int n=input.nextInt();
System.out.println("Tong giai thua la: "+ToanHoc.TinhTong(n));
int M[];
M=new int[n];
int so=1;
for(int i=0;i{
so*=(i+1);
Biên soạn: Thanh Cảnh

- 24 -


×