Jawaban:
if (c == ' ')
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 adalah char
konstanta ( ' '
).
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:
if (ch == ' ') {
// ...
}
Jika yang Anda maksud adalah salah satu karakter spasi putih ASCII tradisional (SP, HT, VT, CR, NL), maka:
if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' || ch == '\x0b') {
// ...
}
Jika yang Anda maksud adalah karakter spasi kosong Unicode, maka:
if (Character.isWhitespace(ch)) {
// ...
}
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:
if (Equals(ch, " ")) {
// ...
}
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
dan String
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:
public interface Comparator<T> {
public int compare(T v1, T v2);
}
Dengan kata lain, nama metode adalah compare
(bukan Equals
), 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:
if (c == " ")
Itu gagal karena dua alasan:
" "
adalah literal String dan bukan literal karakter, dan Java tidak mengizinkan perbandingan langsung String
dan char
nilai.
Anda TIDAK PERNAH membandingkan literal String atau String menggunakan ==
. The ==
operator pada tipe referensi membandingkan identitas obyek, bukan nilai objek. Dalam hal String
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.
Anda bisa menggunakan
Character.isWhitespace(c)
atau salah satu metode lain yang tersedia di kelas Karakter.
if (c == ' ')
juga bekerja.
Saran saya adalah:
if (c == ' ')
Dalam kasus ini, Anda memikirkan fungsi Perbandingan string "String".equals("some_text")
. Karakter tidak perlu menggunakan fungsi ini. Sebaliknya ==
operator perbandingan standar sudah cukup.
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (c == ' ') // your resulting outcome
}
}
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:
if(c == ' '){
//do something here
}
Tapi sekali lagi, saya tidak terbiasa dengan "Equal"
kelas
Anda dapat mencoba:
if(Character.isSpaceChar(ch))
{
// Do something...
}
Atau:
if((int) ch) == 32)
{
// Do something...
}
Untuk membandingkan Strings
Anda harus menggunakan kata kunci sama dengan .
if(c.equals(""))
{
}
equals
kata kunci di Jawa. Ini adalah pengenal. 3) Karena c
adalah char
(tipe primitif !!), Anda tidak dapat menelepon c.equals(...)
. 4) Bahkan jika Anda bisa, tidak ada char
nilai yang dipetakan ""
. Yang terakhir berarti String dengan "tidak ada karakter di dalamnya". Itu tidak bisa cocok dengan satu karakter.
' '
tanpa konten?