SORU
22 Aralık 2010, ÇARŞAMBA


Nasıl bir char boş bir alana eşit olduğunu kontrol etmek için?

Var:

private static int countNumChars(String s) {
    for(char c : s.toCharArray()){
        if (Equals(c," "))
    }
}

Ama bu kod olamaz, bu yöntem için Sembol bulmak söylüyor. Java bu... Herhangi bir öneriniz gibi bir karşılaştırıcısı olan hatırlıyorum?

CEVAP
22 Aralık 2010, ÇARŞAMBA


Sana ihtiyacı var bu kod ile ne demek bağlıdır "boş uzay".

  • Eğer ASCII / Latin-1 / Unicode boşluk (0x20) aka SP kastediyorsan, o zaman:

    if (ch == ' ') {
        // ...
    }
    
  • Eğer geleneksel ASCII boşluk karakterleri (SP, HT, VT, CR, NL) herhangi bir kastediyorsan, o zaman:

    if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' || ch == '\x0b') {
        // ...
    }
    
  • Eğer herhangi bir Unicode boşluk karakteri kastediyorsan, o zaman:

    if (Character.isWhitespace(ch)) {
        // ...
    }
    

Unicode boşluk içerir olduğunu unutmayınekASCII kontrol kodlarıveyüksek kod uçaklar diğer bazı Unicode karakterleri; Character.isWhitespace(char) javadoc bakın.


Yazdığın şey şu idi:

    if (Equals(ch, " ")) {
        // ...
    }

Bu bakımdan yanlış. boolean Equals(char, String) Bir imza ile bir yöntem çağrısı olarak öncelikle, Java derleyici yorumlamaya çalışır.

  • Bu yöntem derleyici hata iletisinde bildirilen var, çünkü yanlış.
  • Equals normalde bir yöntem zaten adı olmaz. Java sözleşmesi yöntem adları küçük harfle başlar.
  • Kodu (yazılı) bir karakter ve bir Dize karşılaştırmak için çalışıyordu, ama char String karşılaştırılabilir ve olmayan ortak bir temel türü için döküm.

Java ile bir Karşılaştırma diye bir şey var, ama bir arayüzü olmayan bir yöntemdir ve bu şekilde bildirildi:

    public interface Comparator<T> {
        public int compare(T v1, T v2);
    }

Başka bir deyişle, yöntem ismi compare (Equals), döner bir tamsayı (boolean), karşılaştırır ve iki değer olabilir yükseltilmiş bir tip tarafından verilen türü parametre.


Birisi (silinen bir Cevap!) çalıştılar şunları söyledi:

    if (c == " ")

Bu iki nedenden dolayı başarısız:

  • " " bir Dize ve bir karakter değişmez değildir, ve Java String char değerleri doğrudan karşılaştırma izin vermiyor.

  • ASLA Dize veya Dize hazır == kullanarak karşılaştırmak gerekir. Bir başvuru türü == operatör kimlik nesne, nesne değeri karşılaştırır. String durumunda ortak farklı kimlik ve aynı değere sahip farklı nesneler var. == bir test olacaksık sık ver yanlış cevap... burada yapmaya çalıştığın şeyin bakış açısından.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Android Authority

    Android Auth

    3 NİSAN 2011
  • Feel The Electricity!

    Feel The Ele

    20 ŞUBAT 2010
  • Schmittastic Jr.

    Schmittastic

    19 Mart 2013