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

  • humanHardDrive

    humanHardDri

    16 Mart 2011
  • The Platform

    The Platform

    14 HAZİRAN 2006
  • Whizzpopping

    Whizzpopping

    10 Kasım 2005