01/10/2018, 14:21

Lỗi duyệt phần tử trong ArrayList<SinhVien>

package testproject;

import java.util.ArrayList;
import java.util.Scanner;

class SinhVien {
    String name,lop;
    short age;
}

public class TestProject {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    // TODO code application logic here
    SinhVien sv ;
    ArrayList<SinhVien> arr;
    Scanner in = new Scanner(System.in);
    arr = new ArrayList<>();
    sv = new SinhVien();
    short k;
    while (true) {
        try {
        System.out.println("1. Nhap danh sach sinh vien");
        System.out.println("2. Hien thi danh sach sinh vien");
        System.out.println("3. Tim kiem theo ten");
        System.out.println("4. Exit");
        System.out.print("chon: ");
        k = Short.parseShort(in.nextLine());
            switch(k) {
            case 1:
                System.out.print("Nhap ten: ");
                sv.name =  in.nextLine();
                System.out.print("Nhap tuoi: ");
                sv.age = Short.parseShort(in.nextLine());
                System.out.print("Nhap lop: ");
                sv.lop = in.nextLine();
                arr.add(sv);
                break;
                case 2:
                 System.out.println("Hien thi danh sach sinh vien");
                   SinhVien svv = new SinhVien();
                  for (short i = 0;i<arr.size();i++) {
                       svv = arr.get(i);**
                   System.out.println("Ten: " +i+" "+svv.name );
                    }
                break;
            case 3:
                break;
            case 4:
                System.exit(0);
            default:
                System.out.println("khong co chung nay nay");
        }

        } catch(Exception e)
                {
                    System.out.println("Khong thay cai gi");
                }
                }
}

}

Sau khi mình nhập 2 người và duyệt để in ra 2 người thì đều in ra tên một người cuối khi nhập.
Ai xem giúp mình là lỗi ở đâu!!
Thank!!

Đoàn Trọng Hiếu viết 16:33 ngày 01/10/2018

không thấy được

Không thấy gì bạn ơi ?, có in tên 2 người rồi còn gì

com0t viết 16:34 ngày 01/10/2018

Mình nhập tên 2 người khác nhau nhưng lại in ra 2 người giống nhau.
Nên nó bị lỗi

Nguyen Kien viết 16:32 ngày 01/10/2018

Bạn thao tác trên đúng một đối tượng Sinh Viên lại thay đổi giá trị tên của sinh viên đó 2 lần thì khi in ra nó sẽ in ra giá trị của biến name ở lần nhập cuối => bạn nên làm như sau

package exercises.basic;

import java.util.ArrayList;
import java.util.Scanner;

class SinhVien {
	String name, lop;
	short age;
}

public class TestExample {

	/**
	 * @param args
	 *            the command line arguments
	 */
	public static void main(String[] args) {
		// TODO code application logic here

		ArrayList<SinhVien> arr = new ArrayList<SinhVien>();
		Scanner in = new Scanner(System.in);
		short k;
		while (true) {
			try {
				System.out.println("1. Nhap danh sach sinh vien");
				System.out.println("2. Hien thi danh sach sinh vien");
				System.out.println("3. Tim kiem theo ten");
				System.out.println("4. Exit");
				System.out.print("chon: ");
				k = Short.parseShort(in.nextLine());
				switch (k) {
				case 1:
					SinhVien sv = new SinhVien();
					System.out.print("Nhap ten: ");
					sv.name = in.nextLine();
					System.out.print("Nhap tuoi: ");
					sv.age = Short.parseShort(in.nextLine());
					System.out.print("Nhap lop: ");
					sv.lop = in.nextLine();
					arr.add(sv);
					break;
				case 2:
					System.out.println("Hien thi danh sach sinh vien");
					SinhVien svv = new SinhVien();
					for (short i = 0; i < arr.size(); i++) {
						System.out.println("Ten: " + i + " " + arr.get(i).name);
					}
					break;
				case 3:
					break;
				case 4:
					System.exit(0);
				default:
					System.out.println("khong co chung nay nay");
				}

			} catch (Exception e) {
				System.out.println("Khong thay cai gi");
			}
		}
	}
}
com0t viết 16:37 ngày 01/10/2018

Thank you very much!!!
Mình đã làm thành công

Đoàn Trọng Hiếu viết 16:28 ngày 01/10/2018

Mình nhập tên 2 người khác nhau nhưng lại in ra 2 người giống nhau.
Nên nó bị lỗi

Mình nghĩ lần sau khi gặp vấn đề gì, bạn nên nêu rõ tình trạng và hỏi đúng câu hỏi.
Nếu ngay từ đầu bạn nói rõ là bị lỗi chỉ hiện thì tên người thứ 2 thì có lẽ mọi người không cần đọc code cũng có thể giúp bạn

Đoàn Trọng Hiếu viết 16:23 ngày 01/10/2018

bạn nên làm như sau

Mình nghĩ bạn không nên code hộ luôn như vậy, lỗi như này chỉ cần giải thích về reference variable là bạn ấy có thể hiểu và tự sửa lỗi => sẽ nhớ lâu hơn.

Bài liên quan
0