Header Ads

Bài Tập Java Số 20: In Điểm Trung Bình

Đề bài

1 file lưu trữ thông tin sinh viên có nội dung như hình dưới:


Mỗi dòng là thông tin của 1 sinh viên bao gồm họ tên, mã số sinh viên, điểm trung bình. Các thông tin này cách nhau 1 khoảng cách. Hãy viết một chương trình nhập vào mã số sinh viên và in ra điểm trung bình của sinh viên.

Giải thuật

Ta sử dụng lớp File và FileReader để đọc dữ liệu của file trên. Vì mỗi thông tin cách nhau 1 khoảng trắng nên ta sẽ đếm số khoảng trắng.

Mã số sinh viên nằm giữa khoảng trắng thứ 2 và khoảng trắng thứ 3 của dòng. Ta sẽ gán các ký tự này vào một chuỗi s và sẽ thu được mã số sinh viên.

So sánh chuỗi s này với mã số sinh viên mà người dùng nhập. Nếu trùng nhau thì ta sẽ in ra điểm trung bình (nằm sau khoảng trắng thứ 3 của mỗi dòng).

Nếu khác nhau thì ta sẽ tiếp tục so sánh ở các dòng tiếp theo.

Code mẫu

package baitap20;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.nio.file.FileSystemNotFoundException;
import java.util.Scanner;
import com.sun.glass.ui.SystemClipboard;

public class baitap20 {
 public static void main(String[] args) {
    File f = new File("E:\\dtb.txt");
    String mssv;
    System.out.println("Nhap Ma So Vinh Vien: ");
    Scanner nhap = new Scanner(System.in);
    mssv=nhap.nextLine();
    try {
        FileReader fr = new FileReader(f);
        BufferedReader br = new BufferedReader(fr);  
        String data = "";
        String dtb=""; 
        int dem=0;
        while((data = br.readLine())!=null){
            String s="";
            int dem1=0;
            for(int i=0;i<data.length();i++){
                if(data.charAt(i)==' '){
                dem1++;
                }
                if(dem1==2){
                   s+=data.charAt(i); 
                }
                if(dem1==3){
                   dem=i+1;
                   break;
                }
            }
            s=s.trim(); //loai bo khoang trang trong chuoi
            if(mssv.equals(s)==true){ 
                for(int j=dem;j<data.length();j++){
                   dtb+=data.charAt(j);
                }
                System.out.println(dtb);
                break;
            }  
       }
       if(dtb==""){
          System.out.println("Ma so ban vua nhap khong co trong ho so luu tru");
       }
    } catch(FileNotFoundException ex){
          System.out.println("file khong ton tai");
    }catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
    }    
 }
}

Không có nhận xét nào

Được tạo bởi Blogger.