30/09/2018, 20:34

hỏi hàm string equals()

mình có đề bài ntn:
*Số lượng sinh viên cần nhập từ bàn phím.
*Khai báo 1 mảng gồm danh sách họ tên sinh viên
*Tên từng sinh viên nhập từ bàn phím

  • Sau khi nhập xong, chương trình hỏi nhập tên sinh viên muốn tìm kiếm
  • Tìm và in ra kết quả là có trong danh sách hay không.
    code:
    package BaiTap;

import java.util.Scanner;

public class Mang {

public static void main(String[] args) {
	int n;
	Scanner scanIn = new Scanner(System.in);
	System.out.println("Nhap vao so sinh vien: ");
	n = scanIn.nextInt();
	scanIn.nextLine();
	String[] ten = new String[n];
	for (int i = 0; i < n; i++) {
		System.out.println("Nhap sinh ten sinh vien thu " + i);
		ten[i] = scanIn.nextLine();
	}
	System.out.println("Nhap ten sv muon tim: ");
	String searchName = scanIn.nextLine();
	for (int i = 0; i < n; i++) {
		if (searchName.equals(ten[i])==true) {
			System.out.println("Ten sv co trong danh sach");
		}
		else {
			System.out.println("Ten sv khong co trong danh sach");
		}
	}
}

}

không hiểu sao mình lại bị sai ở đoạn so sánh 2 string:

System.out.println("Nhap ten sv muon tim: ");
String searchName = scanIn.nextLine();
for (int i = 0; i < n; i++) {
if (searchName.equals(ten[i])==true) {
System.out.println(“Ten sv co trong danh sach”);
}
else {
System.out.println(“Ten sv khong co trong danh sach”);
}
}

Nguyễn Hải Đăng viết 22:38 ngày 30/09/2018

Điều kiện thoát khỏi vòng lặp của bạn đâu?

Châu Milano viết 22:46 ngày 30/09/2018

điều kiện thoát ở chỗ nào vậy bạn vòng for mình có thiếu gì đâu

Hung Nguyen viết 22:46 ngày 30/09/2018

bài bạn viết không sai, chạy ra kết quả. Mình đã thử nhưng mà chỗ "nhập tên sinh viên thứ " nên là i+1 và bản thân hàm equals đã trả về kết quả là boolean (true hoặc false) nên bạn chỉ cần dùng lệnh if(searchName.equals(ten[i])) là được! còn nữa với kiểu bài này theo mình nên sử dụng lớp, bạn tạo 1 class lấy tên là Sinhvien, sau đó sử dụng ArrayList, khi đó bạn sẽ dễ mở rộng các thao tác với đối tượng sinh viên về sau hơn )

Tú Đào viết 22:45 ngày 30/09/2018

tìm thấy rồi thì dừng vòng lặp lại, cho nó chạy tiếp thì nó quét nốt các trường hợp còn lại nên sẽ hiện ra cả 2 kết quả

Tất Huân viết 22:50 ngày 30/09/2018

Mình thì thấy chương trình chạy được, nhưng mình nghĩ trong vòng for của bạn nên có break khi đã tìm thấy tên !

anon10499953 viết 22:37 ngày 30/09/2018

Nên dùng hàm equalsIgnoreCase() - không phân biệt chữ hoa chữ thường. Và bạn cũng nên viết riêng 1 method để tìm kiếm tên sinh viên, như vậy sẽ thuận tiện hơn…

Bài liên quan
0