So sánh chuỗi bởi phương thức compareTo trong Java Phương thức compateTo so sánh các giá trị theo từ điển và trả về một giá trị nguyên miêu tả rằng nếu chuỗi đầu tiên là nhỏ hơn, bằng ho
Trang 1Mục Lục
Trang 3public class CALAMBLL {
CALAMDAL dal = new
CALAMDAL("CUPI-NHOCK-PHAM\\SQLEXPRESS",50301,"sa","123456","QUANLINHANVIEN"); public ArrayList<CALAM> getByMaCA(int ma) {
public class DANGNHAPBLL {
DANGNHAPDAL dal = new PHAM\\SQLEXPRESS",50301,"sa","123456","QUANLINHANVIEN"); public boolean getLogin(String u, String p) {
public class NGANHHANGBLL {
NGANHHANGDAL dal = new PHAM\\SQLEXPRESS",50301,"sa","123456","QUANLINHANVIEN"); public ArrayList<NGANHHANG> getALL() {
return dal.getALL();
}
Trang 4public class QUANLIBLL {
QUANLIDAL dal = new
QUANLIDAL("CUPI-NHOCK-PHAM\\SQLEXPRESS",50301,"sa","123456","QUANLINHANVIEN"); public ArrayList<QUANLI> getALL() {
Trang 5public boolean DeleteData(int MaNV) {
Connection connect = null;
Statement statement = null;
ResultSet result = null;
public BaseSQLConnect() {
}
protected abstract void driverTest() throws Exception;
protected abstract Connection getConnect() throws Exception;
protected Statement getStatement() throws Exception {
if (this.statement == null ? true : this.statement.isClosed()) {
Trang 6public int executeUpdate(String Query) throws Exception {
int res = Integer.MIN_VALUE;
Trang 7catch (java.sql.SQLException e){
throw new Exception("Không thể kết nối đến DataBase Server");
Trang 8public CALAMDAL(String Host, int Port, String UserName, String Password, String DataBase) { super(Host, Port, UserName, Password, DataBase);
}
public ArrayList<CALAM> getByMaCA(int ma) {
ArrayList<CALAM> objs = new ArrayList<>();
if(rs!=null && rs.next()) {
CALAM item = new CALAM();
public ArrayList<CALAM> getAll() {
ArrayList<CALAM> objs = new ArrayList<>();
Trang 9public boolean getLogin(String u, String p) {
boolean check = false;
public boolean AddLogin(DANGNHAP dn) {
boolean check = false;
Trang 10public class NGANHHANGDAL extends MSSQLConnect{
private final String GET_ALL = "select * from NGANHHANG";
private final String GET_BY_MANH = "select NGANHHANG.MaNH,NGANHHANG.TenNH " + "from NGANHHANG,NHANVIEN,QUANLI " +
"where NGANHHANG.MaNH=QUANLI.MaNH AND NHANVIEN.MaNV=QUANLI.MaNV AND NHANVIEN.MaNV=?";
public NGANHHANGDAL(String Host, int Port, String UserName, String Password, String DataBase) { super(Host, Port, UserName, Password, DataBase);
}
public ArrayList<NGANHHANG> getALL() {
ArrayList<NGANHHANG> objs = new ArrayList<>();
public ArrayList<NGANHHANG> getByMaNH(int MaNV) {
ArrayList<NGANHHANG> objs = new ArrayList<>();
try {
getConnect();
Trang 11private final String GET_ALL = "select * from NHANVIEN";
private final String ADD_DATA = "insert into NHANVIEN values (?,?,?,?,?,?,?,?,?)";
private final String REMOVE_DATA = "delete from NHANVIEN where MaNV=?";
private final String UPDATE_DATA = "update NHANVIEN set "
+"TenNV=?,GioiTinh=?,NgaySinh=?,ChucVu=?,Luong=?,CaLam=?,DiaChi=?,SDT=? " +"where MaNV=?";
public ArrayList<NHANVIEN> getALL() {
ArrayList<NHANVIEN> objs = new ArrayList<>();
Trang 12public boolean AddData(NHANVIEN nv) {
boolean check = false;
try {
getConnect();
PreparedStatement ps = connect.prepareStatement(ADD_DATA); ps.setInt(1, nv.getMaNV());
public boolean DeleteData(int ma) {
boolean check = false;
try {
Trang 13getConnect();
PreparedStatement ps = connect.prepareStatement(REMOVE_DATA); ps.setInt(1, ma);
public boolean UpdateData(NHANVIEN nv) {
boolean check = false;
try {
getConnect();
PreparedStatement ps = connect.prepareStatement(UPDATE_DATA); ps.setString(1, nv.getTenNV());
Trang 14import quanlinhanvien.QUANLI;
public class QUANLIDAL extends MSSQLConnect{
private final String GET_ALL = "select * from QUANLI";
private final String GET_PHUCAP = "select PHUCAP from QUANLI where MaNV=?";
private final String ADD_DATA = "insert into QUANLI values (?,?,?,?,?)";
private final String REMOVE_DATA = "delete from QUANLI where MaNV=?";
private final String UPDATE_DATA = "update QUANLI set "
public ArrayList<QUANLI> getALL() {
ArrayList<QUANLI> objs = new ArrayList<>();
QUANLI item = new QUANLI();
NGANHHANG nh = new NGANHHANG();
public ArrayList<QUANLI> getPhuCap(int MaNV) {
ArrayList<QUANLI> objs = new ArrayList<>();
try {
getConnect();
PreparedStatement ps = connect.prepareStatement(GET_PHUCAP);
Trang 15public boolean AddData(QUANLI ql) {
boolean check = false;
try {
getConnect();
PreparedStatement ps = connect.prepareStatement(ADD_DATA); ps.setInt(1, ql.getMaNV());
public boolean DeleteData(int ma) {
boolean check = false;
try {
getConnect();
PreparedStatement ps = connect.prepareStatement(REMOVE_DATA); ps.setInt(1, ma);
int rs = ps.executeUpdate();
if(rs > 0) {
check = true;
}
Trang 16public boolean UpdateData(QUANLI ql) {
boolean check = false;
try {
getConnect();
PreparedStatement ps = connect.prepareStatement(UPDATE_DATA); ps.setString(1, ql.getTenNV());
public class QuanLiNhanVien extends javax.swing.JFrame {
static boolean a = false;
Trang 17static String cv;
NHANVIENBLL nvBLL = new NHANVIENBLL();
ArrayList<NHANVIEN> listNV = new ArrayList<>();
CALAMBLL clBLL = new CALAMBLL();
ArrayList<CALAM> listCL = new ArrayList<>();
NGANHHANGBLL nhBLL = new NGANHHANGBLL();
ArrayList<NGANHHANG> listNH = new ArrayList<>();
QUANLIBLL qlBLL = new QUANLIBLL();
ArrayList<QUANLI> listQL = new ArrayList<>();
Trang 18Vector data = new Vector();
for (NHANVIEN NV : listNV) {
Vector row = new Vector();
Trang 20String TenNV = txtTenNV.getText();
String GioiTinh = cbxGioiTinh.getSelectedItem().toString();
String NgaySinh = txtNgaySinh.getText();
String ChucVu = txtChucVu.getText();
int rowCL = cbxCaLam.getSelectedIndex();
int CaLam = listCL.get(rowCL).getMaCA();
cbxMaNH.setEnabled(true);
txtPhuCap.setEnabled(true);
}else{
listNH = nhBLL.getALL();
int rowNH = cbxMaNH.getSelectedIndex();
int MaNH = listNH.get(rowNH).getMaNH();
float PhuCap = Float.valueOf(txtPhuCap.getText());
String TenNH = listNH.get(rowNH).getTenNH();
QUANLI ql = new QUANLI(MaNV,TenNV,ChucVu,MaNH,PhuCap);
if(nvBLL.AddData(nv)&&qlBLL.AddData(ql)) {
JOptionPane.showMessageDialog(this, "Add Success !");
Trang 22JOptionPane.showMessageDialog(this, "Delete Success !");
Trang 23String TenNV = txtTenNV.getText();
String GioiTinh = cbxGioiTinh.getSelectedItem().toString();
String NgaySinh = txtNgaySinh.getText();
String ChucVu = txtChucVu.getText();
String strLuong = txtLuong.getText();
float Luong;
Luong = Float.parseFloat(strLuong);
int rowCL = cbxCaLam.getSelectedIndex();
int CaLam = listCL.get(rowCL).getMaCA();
JOptionPane.showMessageDialog(this, "Update Success !");
cbxMaNH.setEnabled(true);
txtPhuCap.setEnabled(true);
}else{
listNH = nhBLL.getALL();
int rowNH = cbxMaNH.getSelectedIndex();
int MaNH = listNH.get(rowNH).getMaNH();
float PhuCap = Float.valueOf(txtPhuCap.getText());
String TenNH = listNH.get(rowNH).getTenNH();
QUANLI ql = new QUANLI(MaNV,TenNV,ChucVu,MaNH,PhuCap);
if(nvBLL.UpdateData(nv)&&qlBLL.AddData(ql)||
nvBLL.UpdateData(nv)&&qlBLL.UpdateData(ql)) {
JOptionPane.showMessageDialog(this, "Update Success !");
Trang 24private void btnChiTietActionPerformed(java.awt.event.ActionEvent evt) {
QuanLiNganhHang m = new QuanLiNganhHang();
Trang 25Tài liệu ôn thi Java
1. So sánh chuỗi bởi phương thức equals() trong Java
Phương thức equals() so sánh nội dung ban đầu của chuỗi Nó so sánh tính cân bằng của các giá trị chuỗi.Lớp String cung cấp hai phương thức:
• public boolean equals(Object khac) so sánh chuỗi này với object đã cho.
• public boolean equalsIgnoreCase(String khac) so sánh chuỗi này với chuỗi khác, bỏ qua sự khác
System out println ( s1 equals ( s2 )); //true
System out println ( s1 equals ( s3 )); //true
System out println ( s1 equals ( s4 )); //false
System out println ( s1 equals ( s2 )); //false
System out println ( s1 equalsIgnoreCase ( s3 )); //true
}
2. So sánh chuỗi với toán tử == trong Java
Toán tử == trong Java so sánh các tham chiếu chứ không phải so sánh các giá trị Ví dụ:
String s1 ="Vietjack";
Trang 26String s2 ="Vietjack";
String s3 =new String ("Vietjack");
System out println ( s1 == s2 ); //true (boi vi ca hai cung tham chieu toi cung instance)
System out println ( s1 == s3 ); //false(boi vi s3 tham chieu toi instance duoc tao khong phai trong Pool)
}
3. So sánh chuỗi bởi phương thức compareTo() trong Java
Phương thức compateTo() so sánh các giá trị theo từ điển và trả về một giá trị nguyên miêu tả rằng nếu
chuỗi đầu tiên là nhỏ hơn, bằng hoặc lớn hơn chuỗi thứ hai Giả sử s1 và s2 là hai chuỗi Nếu:
System out println ( s1 compareTo ( s2 )); //0
System out println ( s1 compareTo ( s3 )); //1(boi vi s1 > s3)
System out println ( s3 compareTo ( s1 )); //-1(boi vi s3 < s1 )
public class StringUtils {
public static String removeAccent(String s) {
String temp = Normalizer.normalize(s, Normalizer.Form.NFD);
Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+");
return pattern.matcher(temp).replaceAll("");
}}
Normalizer: Class này cung cấp các phương thức để tiêu chuẩn hóa văn bản Unicode thành văn bản tương đương Nhằm mục đích thuận tiện cho việc sắp xếp và tìm kiếm chuỗi
String temp = Normalizer.normalize(s, Normalizer.Form.NFD): Tiêu chuẩn hóa chuỗi s được truyền vào theo định dạng NFD Kết quả trả về là chuỗi đã được tiêu chuẩn hóa Lớp Pattern: Dùng để nhận Regexp (Cấu trúc đại diện hay Regular Expression) vào vàkiểm tra những String cho vào dựa trên Regexp đã tạo ra Thông thường để nhận một Regexp, thì dùng phương thức compile
matcher: Dùng để so sánh, tìm kiếm những chữ đưa vào dựa trên Regexp đã tạo ra
Trang 27* Hàm main:
package sinhviencntt.com.main;
import sinhviencntt.com.StringUtils.StringUtils;
public class chuyendoitiengviet {
public static void main(String[] args) {
System.out.print(StringUtils.removeAccent("Sinh Viên Công Nghệ Thông Tin"));
}}
Kết quả in ra màn hình:
Sinh Vien Cong Nghe Thong Tin
Danh sách các hàm toán học phổ biến
sin(x); sin của x
cos(x); cos của x
tan(x); tang của x
asin(x); arcsin của x
acos(x); arccos của x
atan(x); arctang của x
exp(x); e mũ x
log(x); loga cơ số 10 của x
sqrt(x); căn bậc 2 của x
pow(x,y); x mũ yceil(x); số nguyên nhỏ nhất không nhỏ hơn xfloor(x); số nguyên lớn nhất không lớn hớn xround(x); số nguyên gần x nhất
random(); số ngẫu nhiên trong khoảng 0.0 đến 1.0abs(x); trị tuyệt đối của x
min(x,y); số nhỏ nhất trong 2 số x,ymax(x,y); số lớn nhất trong 2 số x,y
Trang 28Danh sách các hàm xử lý chuỗi
Giả sử ta có một chuỗi str được khai báo và gán như sau: String str="ABCDEF", thì dưới đây sẽ trình bày các hàm chủ yếu mà ta có thể áp dụng trên chuỗi này
1 charAt(int index):
Hàm này trả về một ký tự ứng với chỉ số index trong chuỗi hiện thời Ví dụ, str.charAt(3) sẽ trả về ký
tự 'D' Lưu ý rằng ký tự đầu tiên của chuỗi có chỉ số là 0
2 compareTo(String st):
Hàm này dùng để so sánh hai đối tượng kiểu String là chuỗi hiện thời và chuỗi st Phép so sánh sẽ trả về một
số nguyên là hiệu của cặp ký tự cuối cùng đem so sánh giữa ký tự của chuỗi hiện thời với chuỗi st Thao tác
so sánh dựa trên giá trị Unicode của từng ký tự trong hai chuỗi bắt đầu từ bên trái hai chuỗi Cụ thể, kết quả trả về là một số âm khi chuỗi st có thứ tự trong bảng chữ cái lớn hơn chuỗi hiện thời Nếu kết quả trả về là
số 0 thì st giống hệt chuỗi hiện thời Còn nếu kết quả trả về một số dương thì chuỗi hiện thời lớn hơn chuỗi st
Hàm này có nhiệm vụ nối chuỗi st vào sau chuỗi hiện thời và trả về chính chuỗi hiện thời sau khi nối
str.concat("123"); //Kết quả là chuỗi str chứa "ABCDEF123".
Trang 295 copyValueOf(char[] data):
Hàm sẽ sao chép dữ liệu từ mảng data sang chuỗi hiện thời
char[] data = {'a', 'b', 'c'};
str = String.copyValueOf(data); /* Sau câu lệnh này thì biến str sẽ chứa chuỗi "abc" */
6 copyValueOf(char[] data, int offset, int count):
Hàm này có nhiệm vụ sao chép các ký tự của mảng data bắt đầu từ vị trí offset với số lượng count ký tự
str = String.copyValueOf(data, 1, 2); //Sao chép vào biến chuỗi str hai ký tự 'b' và 'c' của
s.indexOf(65); //Sẽ trả về -1 vì chuỗi s không có ký tự nào có mã là 65
s.indexOf('Y'); //Sẽ trả về số 1 vì đây là chỉ số của ký tự Y đầu tiên của chuỗi s
9 indexOf(int ch, int fromIndex):
Hàm này tương tự như hàm trên, chỉ khác ở một điểm là việc tìm kiếm và lấy chỉ số bắt đầu từ vị trí có chỉ
str.indexOf("CD"); //Trả về 2 vì chuỗi "CD" có trong chuỗi "ABCD EFGHI" ở vị trí chỉ số 2.
11 indexOf(String st, int fromIndex):
Hàm này tương tự hàm trên, có điểm khác là việc tìm kiếm chuỗi st bắt đầu từ vị trí chỉ số fromIndex
str.indexOf("CD", 3); //Trả về -1 vì từ vị trí chỉ số 3 không tìm thấy chuỗi "CD"
12 lastIndexOf(int ch):
Trang 30Hàm này trả lại vị trí chỉ số của ký ch cuối cùng trong chuỗi.
System.out.print("Đào tạo Lập trình viên".lastIndexOf('t')); /* In ra giá trị là
12 vì ký tự 't' cuối cùng của chuỗi có chỉ số 12 */
13 lastIndexOf(int ch, int lastIndex):
Trả lại vị trí xuất hiện cuối cùng của ký tự có mã ch (từ 0 đến 65536) trong xâu nhưng bắt đầu từ vị trí 0 đến
15 lastIndexOf(String st, int lastIndex):
Hàm trả lại vị trí xuất hiện cuối cùng của chuỗi st trong chuỗi hiện thời bắt đầu từ vị trí 0 đến lastIndex.String s2="abacad";
17 replace(char oldChar, char newChar):
Hàm có nhiệm vụ thay thế tất cả các ký tự oldChar của chuỗi hiện thời bằng các ký tự newChar và trả về chuỗi mới tương ứng
Trang 31s7.substring(3); //Trả vể chuỗi "rica"
20 substring(int beginIndex, int endIndex):
Hàm trả lại một xâu con trong xâu hiện tại bắt đầu từ vị trí beginIndex đến vị trí endIndex-1
Nếu bạn muốn chuyển một giá_trị bất kỳ nào đó sang dạng chuỗi thì bạn sử dụng đến hàm này Ví dụ dưới
đây sẽ chuyển giá trị true (có kiểu boolean) thành chuỗi.
String s11 = String.valueOf(true); //Sau câu lệnh này thì s11 sẽ chứa chuỗi "true"
Dưới đây chúng ta sẽ tìm hiểu một số ví dụ áp dụng các hàm xử lý chuỗi trong Java