Saya memiliki kode ini:
import java.util.Scanner;
public class Example {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String answer = input.nextLine();
if(answer == "yes"){
System.out.println("Yea I programmed this right!");
}else{
System.out.println("Awww :(");
}
}
}
Tetapi ketika saya menjalankannya dan mengetik yes, seharusnya tertulis
**"Ya, aku sudah memprogramnya dengan benar!
tapi yang muncul adalah
&" Aww :( &"
Anda membandingkan string dengan cara yang salah. Anda harus menggunakan metode equals()
, seperti ini:
if (answer.equals("yes"))
Ketika Anda memprogram di Java, operator ==
biasanya digunakan untuk membandingkan tipe data primitif (int
, double
, dll). Jika Anda menggunakan ==
untuk membandingkan dua tipe objek (seperti string), Anda akan membandingkannya untuk identity, yaitu memeriksa apakah mereka mereferensikan objek yang sama dalam memori. Dalam kasus Anda, yang Anda perlukan adalah membandingkan apakah keduanya sama: apakah keduanya memiliki nilai yang sama persis (string karakter dalam kasus ini) meskipun keduanya adalah dua objek yang berbeda - dan untuk itu Anda harus menggunakan metode `sama ().
EDIT :
Lebih baik lagi, untuk mencegah NullPointerException
, ada baiknya Anda membalik urutan perbandingan dan menulis terlebih dahulu string yang Anda bandingkan, seperti ini:
if ("yes".equals(answer))
Penjelasannya sederhana: jika karena suatu alasan jawaban
adalah null
, perbandingan di atas akan dievaluasi menjadi false
(artinya: jawaban
bukan "yes"
), sedangkan versi pertama kode akan menyebabkan NullPointerException
saat mencoba memanggil metode equals()
pada nilai null
.
if(answer == "yes"){
seharusnya
if("yes".equals(answer)){
(==
tidak benar untuk kesetaraan String
, dan kami menangani kasus di mana jawaban
adalah null)
Gunakan String.equals()
sebagai pengganti ==
.
Di Java, ==
menguji bahwa 2 String adalah contoh yang sama persis, di mana "a" != "a". Sebagai gantinya, Anda perlu menguji "a".equals("a")
.
Jadi, gantilah
if(answer == "yes"){
dengan:
if("yes".equals(answer)){
Perhatikan bahwa membalik urutan di sini disengaja, karena hal ini dapat mencegah NullPointerException jika jawaban
adalah null - karena "yes".equals(null)
hanya akan menghasilkan false, alih-alih melempar pengecualian. (Memanggil operasi pada null
akan melemparkan NullPointerException, yaitu null.equals("yes")
.)