Xuất ra file nhưng kết quả không đúng kết qua mong muốn

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.ArrayList;
import java.util.regex.Pattern;

public class main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int kt=0;
		int d = 0;	
		try {
			ArrayList<tam> t= new ArrayList<tam>();
			ArrayList<SVien> LSSV= new ArrayList<SVien>();
			FileReader r = new FileReader("input.txt");
			BufferedReader rr= new BufferedReader(r);
			while(true) {
				boolean rr12=false;
				String temp=rr.readLine();
				if(temp==""||temp==null) {break;}
				String st[]=temp.split("[;]");
				
				String regex="^[\\w!#$%&’*+/=?`{|}~^-]+(?:\\.[\\w!#$%&’*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$";
				String regex1="^(?:(?:31(\\/|-|\\.)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/|-|\\.)(?:0?[1,3-9]|1[0-2])\\2))(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/|-|\\.)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(\\/|-|\\.)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$";
				boolean ktds=true;
				boolean ktngay=true;
				boolean ktemail=true;
				if(st[2].matches(regex)||st[3].matches(regex)) {
					if(st[2].matches(regex)) {
					 rr12=true;
					}
					if(st[3].matches(regex)) {
						 rr12=false;
					}
					ktemail=true;
				}
				else {
					ktemail=false;
				}	
				
					if(st[1].matches(regex1)) {
						ktngay=true;
					}
					else {
						ktngay=false;
					}
						if(st.length<=8) {
							ktds=true;
							
						}
						else {
							ktds=false;
						}
						String tong = null;
						if(!ktemail) {
						
							tong="Sai Email, ";
						}
						if(!ktngay) {
							tong+="Sai Ngay, ";
						}
						if(!ktds) {
							tong+="Danh Sach Cac Do Tuoi Qua 4";	
							}
							
						if(!ktds||!ktemail||!ktngay) {
							System.out.println(tong);
						}
					if(ktds&&ktemail&&ktngay) {
						if(st.length ==8){
							SVien ds=new SVien(st[0], st[1], st[2], st[3], Integer.parseInt(st[4]), Integer.parseInt(st[5])
									,Integer.parseInt(st[6]),Integer.parseInt(st[7]));
							System.out.println(ds.toString());
							LSSV.add(ds);
						}

						if(st.length ==7) {
							SVien ds=new SVien(st[0], st[1], st[2], st[3], Integer.parseInt(st[4]), Integer.parseInt(st[5])
									,Integer.parseInt(st[6]),0);
							System.out.println(ds.toString());
							LSSV.add(ds);
						}else
						if(st.length ==6) {
							SVien ds=new SVien(st[0], st[1], st[2], st[3], Integer.parseInt(st[4]), Integer.parseInt(st[5]),0,0);
							System.out.println(ds.toString());
							LSSV.add(ds);
						}else
						if(st.length ==5) {
							SVien ds=new SVien(st[0], st[1], st[2], st[3], Integer.parseInt(st[4]),0,0,0);
							System.out.println(ds.toString());
							LSSV.add(ds);
						}else
						if(st.length ==4) {
							SVien ds=new SVien(st[0], st[1], st[2], st[3], 0,0
									,0,0);
							System.out.println(ds.toString());
							LSSV.add(ds);
						}
						
						
						int i;	
						for(SVien tt:LSSV){
							d=0;
							if(tt.getC1()>=17) {
								d=d+1;
							}
							if(tt.getC2()>=17) {
								d++;
							}
							if(tt.getC3()>=17) {
								d++;
							}
							if(tt.getC4()>=17) {
								d++;
							}
							tam akl=new tam(tt.HoTen, tt.Email, d);
							t.add(akl);
							System.out.println(d);
						}
						
				}
					for(tam ttt:t) {
					try {
						FileWriter w= new FileWriter("output.txt");
						BufferedWriter ww= new BufferedWriter(w);
						String data=ttt.hoten+";";
						data+=ttt.dc+";";
						data+=ttt.sl;
							ww.write(data);
							ww.newLine();
							ww.close();
						
					} catch (IOException e1) {
						e1.printStackTrace();
					}
					}
				}
				
			
			
			kt=1;
			try {
				Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
				Connection con = DriverManager
						.getConnection("jdbc:sqlserver://ADMIN\\SQLEXPRESS:1433;" + "database=baithi", "sa", "qưerasd");
				java.sql.Statement com = con.createStatement();
				
				com.executeUpdate("INSERT INTO SinhVien(hoten,diachiemail,soluongdotuoi17) Values(ht,dc,sl)");
				System.out.println("Connect Sucessful");
				com.close();

			} catch (Exception e) {
				// TODO: handle exception
			}
			
		} catch (Exception e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
	}

}

Có xuất kết quả ra file nhưng không đúng kết qua cần ra là:

Nguyen Van B;[email protected];0

Quá trời if - else. Mọi thứ được thực tập trung trong 1 phương thức, thấy lộn xộn.
Thiết kế các lớp chưa được ổn.
Lớp gì tên nghe không vững vàng gì hết tam. Nó đáng lẽ nên là lớp SVien hoặc không cần dùng đến luôn.

Bạn thiết kế lại lớp SVien. Độ tuổi các con nên là ArrayList<int>. Trong lớp này cũng tự thực hiện kiểm tra luôn hợp lệ mà để bài yêu cầu.
:thinking:

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?