[Array sang Vector]Nhập môn, nhập số học phần, nhập điểm.. tính Trung Bình Cộng

Viết Sang

Moderator
Mã:
[FONT="Courier New"]import java.lang.*;
import java.util.*;
class DiemTrungBinh 
{
	public static float nhapFloat0_10 (String thongDiep)
	{
		Scanner sc = new Scanner(System.in);
		System.out.println(thongDiep);
		float diem0_10 = sc.nextFloat();
		while (diem0_10<0 || diem0_10>10)
		{
			System.out.printf("Nhap sai diem, yeu cau nhap lai: ");
			diem0_10 = sc.nextFloat();
		}
		return diem0_10;
	}
	public static String nhapLine (String thongDiep)
	{
		Scanner sc= new Scanner(System.in);
		System.out.println(thongDiep);
		String s = sc.nextLine();
		return s;
		
	}
	public static int nhapiDuong(String thongDiep)
	{
		Scanner sc = new Scanner(System.in);
		System.out.println(thongDiep);
		int iDuong = sc.nextInt();
		while (iDuong<=0)
		{
			System.out.println("Nhap sai yeu cau nhap lai: ");
			iDuong=sc.nextInt();
		}
		return iDuong;
	}
	public static String[] nhapMangMonHoc (int smh)
	{
		String[] mang= new String[smh];
		for (int i = 0;i<smh ;i++ )
		{
			mang[i] = nhapLine("Mon hoc thu " + (i+1)+ " :");
		}
		return mang;
	}
	public static int[] nhapMangSoHocPhan (int shp)
	{
		int[] mang = new int[shp];
		for(int i = 0; i<shp; i++)
		{
			mang[i] = nhapiDuong("So hoc phan mon thu " + (i+1) + ": ");
		}
		return mang;
	}
	public static float [] nhapDiemMonHoc (int smh)
	{
		float[] mang = new float[smh];
		for (int i=0;i<smh ;i++ )
		{
			mang[i] = nhapFloat0_10("Diem mon hoc thu " + (i+1) + ":");
		}
		return mang;
	}
	public static void xuatBangDiem (String[] mangMonHoc, int[] mangHocPhan, float[] mangDiem)
	{
		for (int i=0;i<mangDiem.length;i++ )
		{
			System.out.println("Mon hoc:" + mangMonHoc[i]+ "\nSo hoc phan:" + mangHocPhan[i] + "\n" +mangDiem[i]+"\n");
		}
	}
	public static float tinhTrungBinhCong (float[] mangDiem, int[] mangHocPhan)
	{
		int tongHocPhan=0;
		float tongDiem=0;
		for (int i=0;i<mangDiem.length ;i++ )
		{
			tongHocPhan= tongHocPhan+ mangHocPhan[i];
			tongDiem = tongDiem + mangDiem[i]*mangHocPhan[i];
		}
		return tongDiem/tongHocPhan;
	}
	public static void xepLoai (float TBC)
	{
		if(TBC>=9)
		{
			System.out.println("Xep loai Xuat Sac");
		}
		if(TBC>=8 & TBC<9)
		{
			System.out.println("Xep loai Gioi");
		}
		if(TBC>=7 & TBC<8)
		{
		System.out.println("Xep loai Kha");
		}
		if(TBC>=6 & TBC<7)
		{
		System.out.println("Xep loai Trung Binh Kha");
		}
		if(TBC>=5 & TBC<6)
		{
		System.out.println("Xep loai Trung Binh");
		}
		if(TBC<5)
		{
			System.out.println("Xep loai Yeu");
		}
	}
	public static void main(String[] args) 
	{
		int n, hocphan[];
		String[] monhoc;
		float[] diem;
		n=nhapiDuong("Nhap so luong mon hoc: ");
		monhoc=nhapMangMonHoc(n);
		hocphan= nhapMangSoHocPhan(n);
		diem= nhapDiemMonHoc(n);
		xuatBangDiem(monhoc,hocphan,diem);
		System.out.println("Diem trung binh: "+ tinhTrungBinhCong(diem,hocphan));
		xepLoai(tinhTrungBinhCong(diem,hocphan));
	}
}[/FONT]
 

rcp

Administrator
mình-rcp sửa đổi một vài method, vs tự làm phần còn lại hen...



public static Vector<String> nhapMangMonHoc (int smh) {
Vector<String> mang= new Vector<String>(smh);
for (int i = 0;i<smh ;i++ ) {
mang.addElement(nhapLine("Mon hoc thu " + (i+1)+ " :"));
}
return mang;
}
public static Vector nhapDiemMonHoc (int smh) {
Vector mang= new Vector(smh);
for (int i=0; i<smh ; i++ ) {
mang.addElement(nhapFloat0_10("Diem mon hoc thu " + (i+1) + ":"));
}
return mang;
}
public static void xuatBangDiem (Vector<String> mangMonHoc, Vector mangHocPhan, Vector mangDiem) {
for (int i=0; i<mangDiem.size(); i++ ) {
System.out.println("Mon hoc:" + mangMonHoc.elementAt(i)+ "\nSo hoc phan:" + mangHocPhan.elementAt(i) + "\n" +mangDiem.elementAt(i)+"\n");
}
}

//
vs tự làm phần còn lại...

public static void main(String[] args) {
int n;
Vector hocphan;
Vector<String> monhoc;
Vector diem;

n = nhapiDuong("Nhap so luong mon hoc: ");
monhoc = nhapMangMonHoc(n);
hocphan = nhapMangSoHocPhan(n);
diem = nhapDiemMonHoc(n);
xuatBangDiem(monhoc,hocphan,diem);
System.out.println("Diem trung binh: "+ tinhTrungBinhCong(diem,hocphan));
xepLoai(tinhTrungBinhCong(diem,hocphan));
}
 

rcp

Administrator
1) Tại sao để mún chứa những String thì phải initialize như sau:
Vector<String> mang= new Vector<String>(smh);


2) Tại sao để mún chứa những int, float,..thì phải initialize như sau:
Vector mang= new Vector(smh);

hay:
Vector mang= new Vector();
3) Cái khác biệt giữa 2 initialized sau đây là gì?
Vector mang= new Vector(smh);
Vector mang= new Vector();


--- rcp ---
 
Sửa lần cuối:

Viết Sang

Moderator
1) Tại sao để mún chứa những String thì phải initialize như sau:
Vector<String> mang= new Vector<String>(smh);


2) Tại sao để mún chứa những int, float,..thì phải initialize như sau:
Vector mang= new Vector(smh);

hay:
Vector mang= new Vector();
3) Cái khác biệt giữa 2 initialized sau đây là gì?
Vector mang= new Vector(smh);
Vector mang= new Vector();


--- rcp ---

1. Lập trình Java yêu cầu phải gán giá trị của nó theo kiểu dữ liệu tham chiếunhư Integer, Float, String chuyển đổi từ kiểu dữ liệu này sang kiểu dữ liệu khác. (VS thấy chỉ gặp trường hợp Vector này thôi... và đặc biệt phải Ghi hoa các chữ cái đầu... VS có thắc mắc vì sao khi chạy một fuction kiểu String l và không có kiểu string như các kiểu int, float.. nhỉ?? ).

2. Theo VS được tiếp thu kiến thức thì trong các loại kiểu dữ liệu như int, float, char... là những kiểu giá trị nguyên thủy của Java.. nên Java có thể tự nhận biết được và không cần khai báo kiểu những kiểu dữ liệu "Tham chiếu".. còn String là một kiểu dữ liệu dạng đặc biệt như trên VS đã đề cập tới.. VS cũng không hiểu nguyên do vì chưa đi chuyên sâu hơn.

3. Vector <Tên biến> = new Vector (<giá trị đầu vào>)... Đây là cú pháp để nhập giá trị (bộ nhớ) vào Vector theo một số đã định sẵn trước
Vector < Tên biếb > = new Vector (<Không có giá trị đầu vào>)... Đây là cách khai báo mặc định của Java...
Khác giau nhữa .... new Vector (smh) (1)
new Vector () (2)
Với (1), ta có thể tự ý cấp phát bộ nhớ mà ta dự định trước sẽ cấp là bao nhiêu.. (ví dụ như 1 lớp ta dự toán lớp đó có 40 người chẳng hạn).
Với (2) ta chưa thể xác định được bộ nhớ là bao nhiêu.. và Java sẽ tự cấp phát cho nó một bộ nhớ bất kì và khi lập trình ta có thể tự tùy chỉnh số lượng của nó
 

rcp

Administrator
1. Lập trình Java yêu cầu phải gán giá trị của nó theo kiểu dữ liệu tham chiếunhư Integer, Float, String chuyển đổi từ kiểu dữ liệu này sang kiểu dữ liệu khác. (VS thấy chỉ gặp trường hợp Vector này thôi... và đặc biệt phải Ghi hoa các chữ cái đầu... VS có thắc mắc vì sao khi chạy một fuction kiểu String l và không có kiểu string như các kiểu int, float.. nhỉ?? ).

2. Theo VS được tiếp thu kiến thức thì trong các loại kiểu dữ liệu như int, float, char... là những kiểu giá trị nguyên thủy của Java.. nên Java có thể tự nhận biết được và không cần khai báo kiểu những kiểu dữ liệu "Tham chiếu".. còn String là một kiểu dữ liệu dạng đặc biệt như trên VS đã đề cập tới.. VS cũng không hiểu nguyên do vì chưa đi chuyên sâu hơn.

3. Vector <Tên biến> = new Vector (<giá trị đầu vào>)... Đây là cú pháp để nhập giá trị (bộ nhớ) vào Vector theo một số đã định sẵn trước
Vector < Tên biếb > = new Vector (<Không có giá trị đầu vào>)... Đây là cách khai báo mặc định của Java...
Khác giau nhữa .... new Vector (smh) (1)
new Vector () (2)
Với (1), ta có thể tự ý cấp phát bộ nhớ mà ta dự định trước sẽ cấp là bao nhiêu.. (ví dụ như 1 lớp ta dự toán lớp đó có 40 người chẳng hạn).
Với (2) ta chưa thể xác định được bộ nhớ là bao nhiêu.. và Java sẽ tự cấp phát cho nó một bộ nhớ bất kì và khi lập trình ta có thể tự tùy chỉnh số lượng của nó


Câu 2 và 3 VS trả lời rất đúng.

Riêng câu 1 mình-rcp xin giải thích như sau (mình-rcp khuyên các bạn nên xử dụng từ tiếng Anh ngõ hầu sau nì tham khảo sách tiếng Anh dễ hỉu hơn):

String là một Object.
Integer, Float là một Object.


Do đó khi initialize một Vector của một Object thì ta phải viết như sau:
Vector <Object> = new Vector <Object> ();
Vector <String> = new Vector <String> ();
Vector <Integer> = new Vector <Integer> ();
Vector <Float> = new Vector <Float> ();
--- rcp ---
 

Facebook Comment

Top