Bài tập tham khảo về kỹ thuật lập trình với ngôn ngữ Java (có code và minh họa kết quả cụ thể)
Trang 1BÀI THỰC HÀNH SỐ 1 Bài 1 : Viết chương trình nhập 1,2 hoặc 3 số nguyên dương Nếu người dùng nhập
một số nguyên a, chương trình sẽ hiển thị diện tích của hình tròn có bán kính là a Nếu người dùng nhập vào hai số nguyên a và b thì chương trình sẽ hiển thị diện tích hình chữ nhật có chiều dài a, chiều rộng là b Nếu người dùng nhập vào 3 số nguyên a,b và c thì chương trình trước tiên sẽ kiểm tra các số có phải là 3 cạnh của tam giác không? Nếu đúng , chương trình sẽ hiển thị diện tích của tam giác có chiều dài 3 cạnh là a,b, c; ngược lại, chương trình sẽ hiển thị thông điệp “ không phải là độ dài ba cạnh của một tam giác”
Code :
import java.util.Scanner;
public class Bai1 {
public static int a = 0, b = 0, c = 0;
public void nhap() {
Scanner sc = new Scanner(System.in);
Trang 2public static boolean kiemtra(int a, int b, int c) {
if ((a + b > c) && (a + c > b) && (b + c > a)) {
public static void main(String args[]) {
Bai1 b1 = new Bai1();
//Khong nhap gan gia tri = 0;
b1.nhap();
if (a != 0 && b == 0 && c == 0) {
Trang 3public class Bai1 extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
Trang 5taResut = new JTextArea(5, 40);
taResut.setFont(new Font("Arial", Font.BOLD, 14));
Integer.parseInt(c));
else {
if (!a.equals("") && !b.equals(""))
msg = dientichhcn(Integer.parseInt(a), Integer.parseInt(b));
Trang 6else if (!a.equals("") && !c.equals(""))
msg = dientichhcn(Integer.parseInt(a), Integer.parseInt(c));
else if (!b.equals("") && !c.equals(""))
msg = dientichhcn(Integer.parseInt(b), Integer.parseInt(c));
public static String dientichhinhtron(int r) {
String str = "Dien tich hinh tron = " + (Math.PI * r * r);
return str;
}
public static String dientichhcn(int a, int b) {
String str = "Dien tich hcn = " + (a * b);
Trang 7str = "Dien tich tam giac = " + s;
public static void main(String args[]) {
new Bai1("Thuc hanh Java");
}
}
Demo chương trình :
Trang 8Bài 2: Viết chương trình hiển thị tẩt cả các số n từ 10 đến 1000 có tính chất sau:
tổng cảu tất cả các số trong n bằng tích của tất cả các số có trong n Ví dụ số: 123 có tính chất này, vì 1+2+3=1*2*3
Code :
public class Bai2 {
public static int n, i = 0;
public void hienthi() {
Trang 9public static void main(String args[]) {
Bai2 b2 = new Bai2();
Trang 11public void display() {
int a[] = new int[10];
public static void main(String args[]) {
new bai2s("Bai 2 - Thuc hanh Java");
Trang 12}
}
Kết quả chạy Demo:
Bài 3: Viết chương trình nhập số tự nhiên n (n=1,2,…) và kiểm tra biểu diễn nhị
phân của nó có đối xứng hay không ?
Ví dụ: n=9, biểu diễn nhị phân của nó là 1001 là đối xứng
Còn nếu n=10 , biểu diễn nhị phân của nó là 1010 là không đối xứng
Code :
import java.util.*;
public class Bai3 {
public static int n, m, k;
public void nhap() {
Scanner scanner = new Scanner(System.in);
public void dectobin(int n) {
int[] mang = new int[4];
Trang 13public static void main(String args[]) {
Bai3 b3 = new Bai3();
Trang 14Kết quả chạy Demo:
Trang 16public void tinhdoixung(int n) {
int bin[] = new int[32];
for (int i = 0; i < len; i++)
s1 += bin[i] * Math.pow(2, i);
for (int j = len - 1; j >= 0; j )
s2 += bin[j] * Math.pow(2, (len - j - 1));
String msg = "Bieu dien nhi phan cua " + p + " la: ";
for (int i = len - 1; i >= 0; i )
msg += bin[i];
if (s1 == s2)
msg += " la doi xung!";
else
Trang 17msg += " la khong doi xung!";
Trang 18Bài 1 : Viết chương trình nhận một chuỗi và hiển thị các nguyên âm xuất hiện trong
chuỗi Ví dụ : Nếu nhập là “Nguyen” thì hiển thị u,y,e
public class XauGUI extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JPanel p1, p2, center;
Trang 19p1.add(tf1);
add(p1, BorderLayout.NORTH);
center = new JPanel();
// center.setBorder(BorderFactory.createTitledBorder( "Chuc nang")); center.setLayout(new FlowLayout(FlowLayout.CENTER));
bt1 = new JButton("Kiem tra");
public static void main(String args[]) {
new XauGUI("Kiem tra nguyen am co trong xau");
}
public void kiemtra() {
str = tf1.getText();
for (int i = 0; i <= str.length(); i++) {
if (str.charAt(i) == 'a' || str.charAt(i) == 'e'
|| str.charAt(i) == 'i' || str.charAt(i) == 'o'
|| str.charAt(i) == 'u' || str.charAt(i) == 'y'
|| str.charAt(i) == 'A' || str.charAt(i) == 'E'
Trang 20|| str.charAt(i) == 'I' || str.charAt(i) == 'O'
|| str.charAt(i) == 'U' || str.charAt(i) == 'Y') {
Kết quả chạy Demo:
Bài 3: a.Viết chương trình đếm số ký tự cho trước (Ví dụ ký tự ‘u’ trong một chuỗi
cho trước ( ví dụ: nguyen van nguyen)
Code:
import java.awt.*;
import java.awt.event.*;
Trang 21private static String str, st;
private static int dem = 0;
public DemKyTuChoTruoc(String title) {
Trang 22public static void main(String args[]) {
DemKyTuChoTruoc ds = new DemKyTuChoTruoc("Dem ky tu cho truoc");
public void dem() {
char[] ch = new char[st.length()];
for (int k = 0; k < st.length(); k++) {
ch[k] = st.charAt(k);
}
for (int l = 0; l < st.length(); l++) {
for (int m = 0; m < str.length(); m++) {
Trang 23}
}
Kết quả chạy demo :
b Viết chương trình nhập vào một chuỗi và tạo ra bảng tần số xuất hiện của mỗi ký
public class Tanso extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JLabel lb1;
private JPanel p1, p2;
private JTextField tf1;
private JButton ok;
private JTextArea ta;
public Tanso(String title) {
super(title);
setSize(500, 300);
addZoom();
setVisible(true);
Trang 24public static void main(String args[]) {
Tanso d = new Tanso("Tan so xuat hien cua cac tu trong xau");
d.setVisible(true);
}
public void dem(String str) {
char[] chs = new char[str.length()];// Luu lai cac ky tu
int[] tmp = new int[str.length()];// Dem so lan ky tu xuat hien
for (int x = 0; x < str.length(); x++)
Trang 25chs[x] = str.charAt(x);// Luu char
for (int x = 0; x < str.length(); x++) {
for (int y = 0; y < str.length(); y++) {
for (int x = 0; x < str.length(); x++)
ta.append("Ky tu: " + chs[x] + " tan so = " + tmp[x] + "\n");
}
public void demtanso(String str) {
String s = str.toLowerCase();// Chuyen thanh cac chu viet thuong
ArrayList<Character> val = new ArrayList<Character>();
// Array List chua cac char trong String
boolean flag = true;
for (int x = 0; x < s.length(); x++)
Trang 26// neu trung
}
int max = 0, tmp = 0, dem = 0;
int[] count = new int[val.size()]; // Dem so lan xuat hien cua cac char
for (int x = 0; x < val.size(); x++) {
max = tmp;// so lan ma max
count[x] = tmp;// gan lai so lan xuat hien
}
for (int x = 0; x < val.size(); x++)
ta.append("\t" + val.get(x) + "\t" + count[x] + "\n");
for (int i = 0; i < str.length(); i++) {
Trang 27public class AnagramGui extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JPanel p1, p2, p3;
private JLabel lb1, lb2, lb3;
private JTextField tf1, tf2;
private JButton bt1;
private static String str1, str2;
public AnagramGui(String title) {
super(title);
setSize(400, 200);
setLayout(new BorderLayout());
addZoom();
Trang 28public static void main(String args[]) {
AnagramGui ag = new AnagramGui("Kiem tra chuoi Anagram");
ag.setVisible(true);
}
public void xuli() {
Trang 29char[] ch1 = new char[str1.length()];
char[] ch2 = new char[str2.length()];
for (int i = 0; i < str1.length(); i++) {
for (int x = 0; x < ch1.length; x++) {
for (int y = 0; y < ch2.length; y++) {
Trang 31Bài 1: Viết chương trình tính n! với 1<n<=1000
public class Giaithua extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
/** The factorial() method, using BigIntegers cached in a ArrayList */
public static synchronized BigInteger factorial(int x) {
if (x < 0)
throw new IllegalArgumentException("x must be non-negative."); for (int size = table.size(); size <= x; size++) {
BigInteger lastfact = (BigInteger) table.get(size - 1);
BigInteger nextfact = lastfact.multiply(BigInteger.valueOf(size));
Trang 32public static void main(String arg[]) {
Giaithua gt = new Giaithua("Tinh giai thua");
gt.setVisible(true);
Trang 33Bài 3:Viết chương trình tạo ra một ma trận (các phần tử của ma trận là ngẫu nhiên
hoặc nhập từ bàn phím) và hiển thị tất cả các điểm yên ngựa trong ma trận Điểm yên ngựa của ma trận là số trên hàng i và cột j và là số nhỏ nhất trong hàng i đồng thời cũng là số lớn nhất trong cột j
Trang 34Matran matran;
JFrame frMain;
JButton btTaoMT, btHienThi, btXoa, btThoat;
JTextField tfDong, tfCot;
JTextArea taMatran, taHienThi;
pn1.add(new JLabel("So dong: "));
tfDong = new JTextField(5);
pn1.add(tfDong);
pn1.add(new JLabel("So cot: "));
tfCot = new JTextField(5);
Trang 37mini = maxj = a[i][j];
// tim gia tri nho nhat tren hang i
public static void main(String[] args) {
// TODO Auto-generated method stub
Trang 38private int m, n;
public Matran(int m, int n) {
Random rand = new Random();
this.m = m;
this.n = n;
this.a = new int[m][n];
for (int i = 0; i < m; i++)
this.a = new int[m][n];
for (int i = 0; i < m; i++)
Trang 39}
}
Kết quả chạy Demo:
Bài 4: Viết chương trình tính tổ hợp
a với và
b
Code:
import java.util.Scanner;
public class Bai42 {
public long GT(int n) {
Trang 40Bai42 b4 = new Bai42();
Scanner in = new Scanner(System.in);
System.out.println("Ket qua cau a:" + b4.Ca(k, n));
System.out.println("Ket qua cau b:" + b4.Cb(k, n));
}
}
Kết quả chạy Demo:
Trang 42public void actionPerformed(ActionEvent ae) {
Object click = ae.getSource();
if (click == btThoat)
Trang 44public BigInteger giaiThua(int n) {
BigInteger fact = new BigInteger("1");
for (int i = 1; i <= n; i++)
Trang 45Bài 5: Cho một mảng số nguyên( dương và âm) Viết chương trình tìm mảng con
lớn nhất, tức là mảng con trong đó tổng các phần tử của nó là lớn nhất Ví dụ , nếu cho mảng dưới đây:
pn1.add(new JLabel("Nhap mang: "));
tfMang = new JTextField(30);
pn1.add(tfMang);
JPanel pnBorder = new JPanel(new BorderLayout());
frMain.add(pnBorder, BorderLayout.CENTER);
Trang 46pn2 = new JPanel(new FlowLayout());
public void actionPerformed(ActionEvent ae) {
Object click = ae.getSource();
Trang 47.setText("Mang con lon nhat dau tien la nhung so hien thi\n");
try {
int[] x = this.taoMang(tfMang.getText());
int len = x.length;
taHienThi.append("Mang vua nhap: ");
for (int i = 0; i < len; i++)
if (x[i] > 0 && x[i] < 10)
public void TimMangCon(int[] x, int n) {
int i = 0, j, start = 0, end = 0, k, sum, maxSum;
Trang 48}
i++;
}
taHienThi.append("\nMang con lon nhat: ");
// in mang con lon nhat
public int[] taoMang(String chuoiMang) {
StringTokenizer str = new StringTokenizer(chuoiMang, " ");
int[] a = new int[str.countTokens()];
public static void main(String[] args) {
// TODO Auto-generated method stub
new Bai5();
}
}
Trang 49Kết quả chạy Demo:
Bài 6:Cho một ma trận các số nguyên ( số dương và số âm) Viết chương trình tìm
ma trận con sao cho tổng tất cả các phần tử của nó là lớn nhất Ví dụ: Nếu mảng cho dưới đây:
Trang 50a Viết chương trình tạo ra trò chơi puzzle như hình sau(các số là các button)
Trang 51frMain = new JFrame("PuzzleGame");
for(int i = 0; i < item.length; i++){
menuItem = new JMenuItem(item[i]);
menuItem.addActionListener(this);
menu.add(menuItem);
}
btNumber = new JButton[arr.length];
for(int i=0; i < arr.length; i ++){
btNumber[i] = new JButton(arr[i]);
public void actionPerformed(ActionEvent ae){
String itemSelect = ae.getActionCommand();
public void go(){
int len = arr.length;
Trang 52public static void main(String[] args) {
// TODO Auto-generated method stub
new PuzzleGame();
}
}
Kết quả chạy Demo:
Bài 7: Viết chương trình thực hiện các phép tính số học cơ bản như trong hình dưới
đây:
Trang 53Khi người dùng nhất nút “C, textfield sẽ được xoá Khi người dùng kích vào nút
“=” thì chương trình sẽ tính toán biểu thức được nhập trước đó
Code :
import java.awt.*;
import java.awt.event.*;
public class casio extends Frame implements ActionListener {
private static final long serialVersionUID = 1L;
float kq;
Label lb1, lb2;
TextField tf1, tf2;
Panel p1, p2, p3, p31, p23;
Button cong, tru, nhan, chia, kqua, mot, hai, ba, bon, nam, sau, bay, tam,
chin, khong, sin, cos, tan, on, off, ac, del;
cong = new Button("+");
tru = new Button("-");
Trang 54nhan = new Button("*");
chia = new Button("/");
kqua = new Button("=");
sin = new Button("SIN");
cos = new Button("COS");
tan = new Button("TAN");
off = new Button("OFF");
on = new Button("ON");
ac = new Button("AC");
del = new Button("DEL");
khong = new Button("0");
mot = new Button("1");
hai = new Button("2");
ba = new Button("3");
bon = new Button("4");
nam = new Button("5");
sau = new Button("6");
bay = new Button("7");
tam = new Button("8");
chin = new Button("9");
// chin.setVisible(false);
p1 = new Panel(new GridLayout(3, 1));
p2 = new Panel(new GridLayout(2, 1));
p3 = new Panel(new GridLayout(2, 3));
p31 = new Panel(new GridLayout(2, 2));
Trang 56public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Trang 59public static void main(String a[]) {
new casio("may tinh casio");
}
}
Kết quả chạy Demo: