kzen.dev
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 Cole
Cole
Question

Membaca dan memeriksa string dari input pengguna

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 :( &"

4 2011-12-28T21:32:34+00:00 3
Óscar López
Óscar López
Pertanyaan edit 27 Juli 2013 в 3:15
Pemrograman
java
string
input
user-input
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
Solution / Answer
Óscar López
Óscar López
28 Desember 2011 в 9:34
2011-12-28T21:34:08+00:00
Lebih
Sumber
Sunting
#15067499

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.

Óscar López
Óscar López
Jawaban edit 28 Desember 2011 в 9:56
10
0
Matthew Gilliard
Matthew Gilliard
28 Desember 2011 в 9:34
2011-12-28T21:34:55+00:00
Lebih
Sumber
Sunting
#15067500
if(answer == "yes"){

seharusnya

if("yes".equals(answer)){

(== tidak benar untuk kesetaraan String, dan kami menangani kasus di mana jawaban adalah null)

Matthew Gilliard
Matthew Gilliard
Jawaban edit 31 Mei 2013 в 11:14
2
0
 ziesemer
ziesemer
28 Desember 2011 в 9:34
2011-12-28T21:34:04+00:00
Lebih
Sumber
Sunting
#15067498

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").)

1
0
Related communities 3
Programmer JAVA indonesia
Programmer JAVA indonesia
1 757 pengguna
Buka telegram
jvmusergroup
jvmusergroup
354 pengguna
Bismillahirrohmanirohim. Perhatian! Grup ini merupakan ekspansi dari grup Forum Java Programmer Indonesia di Facebook. Silahkan berbagi pengalaman dan masalah seputar Java dan keluarganya. https://t.me/JVMIndonesia Admin : @hendisantika34
Buka telegram
Java Indonesia🇲🇨
Java Indonesia🇲🇨
153 pengguna
Programmer Java Indonesia. Grup ini digunakan untuk bertanya terkait materi belajar Java / fullstack Warning=> -dilarang promosi(izin adm -18+🔞 - berbicara sopan - no spam /boot Mohon ikut aturan grup belum di keluarkan
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
工藤 芳則
Terdaftar 6 hari yang lalu
2
Ирина Беляева
Terdaftar 1 minggu yang lalu
3
Darya Arsenyeva
Terdaftar 1 minggu yang lalu
4
anyta nuam-nuam (LapuSiK)
Terdaftar 1 minggu yang lalu
5
Shuhratjon Imomkulov
Terdaftar 1 minggu yang lalu
ID
JA
© kzen.dev 2023
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi