Inilah yang saya punya:
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (Equals(c," "))
}
}
Tetapi kode itu mengatakan tidak dapat menemukan Simbol untuk metode itu. Saya ingat Java memiliki pembanding seperti ini ... Ada saran?
java
char
whitespace
Jonik
sumber
sumber
' '
tanpa konten?Jawaban:
char
adalah tipe data primitif, sehingga dapat dibandingkan dengan==
.Juga, dengan menggunakan tanda kutip ganda Anda membuat
String
konstanta (" "
), sedangkan dengan tanda kutip tunggal itu adalahchar
konstanta (' '
).sumber
Kode yang Anda butuhkan tergantung pada apa yang Anda maksud dengan "ruang kosong".
Jika yang Anda maksud adalah karakter spasi ASCII / Latin-1 / Unicode (0x20) alias SP, maka:
Jika yang Anda maksud adalah salah satu karakter spasi putih ASCII tradisional (SP, HT, VT, CR, NL), maka:
Jika yang Anda maksud adalah karakter spasi kosong Unicode, maka:
Perhatikan bahwa ada spasi kosong Unicode yang menyertakan kode kontrol ASCII tambahan , dan beberapa karakter Unicode lainnya di bidang kode yang lebih tinggi; lihat javadoc untuk
Character.isWhitespace(char)
.Apa yang Anda tulis adalah ini:
Ini salah di beberapa tingkatan. Pertama, cara compiler Java mencoba menafsirkannya adalah sebagai panggilan ke metode dengan tanda tangan
boolean Equals(char, String)
.Equals
biasanya tidak akan menjadi nama metode. Konvensi Java adalah bahwa nama metode dimulai dengan huruf kecil.char
danString
tidak sebanding dan tidak dapat dilemparkan ke tipe dasar umum.Ada yang namanya Comparator di Java, tetapi ini adalah antarmuka bukan metode, dan dideklarasikan seperti ini:
Dengan kata lain, nama metode adalah
compare
(bukanEquals
), ia mengembalikan integer (bukan boolean), dan membandingkan dua nilai yang dapat dipromosikan ke tipe yang diberikan oleh parameter tipe.Seseorang (dalam Jawaban yang dihapus!) Mengatakan mereka mencoba ini:
Itu gagal karena dua alasan:
" "
adalah literal String dan bukan literal karakter, dan Java tidak mengizinkan perbandingan langsungString
danchar
nilai.Anda TIDAK PERNAH membandingkan literal String atau String menggunakan
==
. The==
operator pada tipe referensi membandingkan identitas obyek, bukan nilai objek. Dalam halString
ini adalah umum untuk memiliki objek yang berbeda dengan identitas yang berbeda dan nilai yang sama. Sebuah==
tes akan sering memberikan jawaban yang salah ... dari perspektif apa yang Anda coba lakukan di sini.sumber
Anda bisa menggunakan
atau salah satu metode lain yang tersedia di kelas Karakter.
juga bekerja.
sumber
Karena
char
merupakan tipe primitif, Anda tinggal menulisc == ' '
.Anda hanya perlu memanggil
equals()
jenis referensi sepertiString
atauCharacter
.sumber
Saran saya adalah:
sumber
Untuk membandingkan karakter Anda menggunakan
==
operator:sumber
Character.isSpaceChar(c) || Character.isWhitespace(c)
bekerja untuk saya.sumber
Dalam kasus ini, Anda memikirkan fungsi Perbandingan string
"String".equals("some_text")
. Karakter tidak perlu menggunakan fungsi ini. Sebaliknya==
operator perbandingan standar sudah cukup.sumber
Sekilas, kode Anda tidak akan dikompilasi. Karena pernyataan if bersarang tidak memiliki kurung kurawal, itu akan mempertimbangkan baris berikutnya kode yang harus dieksekusi. Selain itu, Anda membandingkan karakter dengan String, "". Coba bandingkan nilai sebagai karakter sebagai gantinya. Saya pikir sintaks yang benar adalah:
Tapi sekali lagi, saya tidak terbiasa dengan
"Equal"
kelassumber
Anda dapat mencoba:
Atau:
sumber
Untuk membandingkan
Strings
Anda harus menggunakan kata kunci sama dengan .sumber
equals
kata kunci di Jawa. Ini adalah pengenal. 3) Karenac
adalahchar
(tipe primitif !!), Anda tidak dapat meneleponc.equals(...)
. 4) Bahkan jika Anda bisa, tidak adachar
nilai yang dipetakan""
. Yang terakhir berarti String dengan "tidak ada karakter di dalamnya". Itu tidak bisa cocok dengan satu karakter.