01/10/2018, 00:37

Cách so sánh 2 String

Chào mọi người.
Bạn gái mình đố mình làm được với đúng yêu cầu thế này:

  • Viết 1 đoạn code java với yêu cầu.
  • Nhập 1 chuỗi từ bàn phím (ví dụ là “add”).
  • Nếu chuỗi đó là “add” thì in ra kể quả ra “giỏi”, không phải chuỗi “add” thì in ra “dốt”.
    Mình đã viết sẵn ra như thế này, và kết quả luôn hiện ra chữ dốt dù mình đã nhập đúng chữ add
import java.io.IOException;
import java.util.*;
public class Test{
	
	public static void main(String args[]){
		String a;
		Scanner scanner = new Scanner(System.in);
		a = scanner.nextLine();
		if (a=="add"){
			System.out.println("gioi");
		}else{
			System.out.println("dot");
		}
		System.out.println("chuoi ban da nhap vao la :" +a);
	}
}

Mình đã thử những cách sau nhưng không được:

  • Mình bỏ qua phím enter(ký tự “/n”) bằng cách thêm dòng scanner.nextLine(); sau a = scanner.nextLine();
  • Mình nghĩ là lúc nhập chuỗi vào nó nhận phím enter nên mình thêm “n” hoặc “ ” vào if(a=“add ”).
    Vậy, làm sao để hiện ra chữ “giỏi” khi nhập chuỗi “add” ^^.
Nguyễn Xuân Phúc viết 02:40 ngày 01/10/2018

vấn đề k phải là nằm ở nextLine nhé, nó nằm ở chỗ khác: “how to compare strings in java” :3
klq nhưng cái này là đang cầu cứu chứ thách đố vui gì =)))

Ngô Doãn Tuấn viết 02:52 ngày 01/10/2018

if (a==“add”){

-__ String trong Java bác không so sánh kiểu này được nhé.
Phải dùng phương thức equals

str1.equals(str2)

Lê Tuấn Vũ viết 02:46 ngày 01/10/2018

Cảm ơn bạn nhé, mình đã hiểu vấn đề ^^

Tâm Ninja viết 02:41 ngày 01/10/2018

a==“add”

Vi khong duoc su dung Unikey nen ban chiu kho doc khong dau vay.

Bay gio con co ca vu ban gai thach do lap trinh nua. Ve co ban thi viec ban dung so sanh o tren khong co sai. Vi String deu duoc nam chung trong String pool nen khi co gia tri giong nhau, chung se duoc tro cung den 1 o nho giong nhau. Nen voi String binh thuong, ban su dung cach so sanh == se giup tang toc do cua chuong trinh. Cai nay la Trick khi hieu ve String pool trong java.

Tuy nhien voi scanner.nextLine(); thi moi chuyen lai khac. Luc nay chuoi String duoc tra ve khong nam tren heap duoc cap phai cho chuong trinh. Vay nen no cung khong nam trong String pool. Luc nay muon so sanh gia tri cua no voi doan String khac thi khong the dung duoc lai Trick kia nua. Buoc phai su dung equal de so sanh.

Reoteu Ray viết 02:40 ngày 01/10/2018

có nhất thiết phải lôi bạn gái ra không…:D…hình như ở chỗ if nó không so sánh giá trị mà nó đang so sánh 2 đối tượng vì trong java String là kiểu tham chiếu và cái String “add” và biến a là 2 đối tượng khác nhau , bạn muốn rõ hơn thì thử test cũng dùng toán tử == mà dùng với kiểu char đi nó sẽ so sánh giá trị…

Bài liên quan
0