2013-06-27 11 views
16

Got błąd „niezamknięte znaki liter”, przy użyciu BlueJ, pisząc:niezamknięte Charakter błędu Dosłowne

class abc 
{ 
    public static void main(String args[]) 
    { 
     String y; 
     y = 'hello'; 
     System.out.println(y); 
    } 
} 

Ale nie mogę dowiedzieć się, co jest nie tak. Każdy pomysł?

Dzięki.

+1

Ciągi w Javie muszą być ujęte w cudzysłów. Użyj '" cześć "'. –

+0

[docs.oracle.com/javase/tutorial/java/data/strings.html](http://docs.oracle.com/javase/tutorial/java/data/strings.html) – jlordo

+0

Ok, więc mam też wiele odpowiedzi na temat korekty odpowiedzi, ale dlaczego "String" w "" i "char" w ""? –

Odpowiedz

30

W Javie, pojedyncze cytaty mogą wziąć tylko jeden znak, z ucieczki w razie potrzeby. Trzeba użyć pełnych cudzysłów następująco ciągów:

y = "hello"; 

też stosować

System.out.println(g); 

które zakładam, że powinno być

System.out.println(y); 

Uwaga: Dokonując char wartości (najprawdopodobniej z nich skorzystasz). Potrzebujesz pojedynczych cytatów. Na przykład:

char foo='m'; 
0

'' obejmuje pojedynczy char, natomiast "" obejmuje String.

Zmień

y = 'hello'; 

->

y = "hello"; 
6

Java używa cudzysłowów dla "String" i apostrofów dla 'C' haracters.

1

Ciąg y = "cześć";

zadziała (zanotuj podwójne cytaty).

char y = 'h'; to będzie działać dla znaków (uwaga na pojedyncze cudzysłowy)

, ale typ jest kluczem: '' (pojedyncze cudzysłowy) dla jednego znaku, "" (podwójne cudzysłowy) dla ciągu znaków.

2

Chciałbym dodać mały dodatek do istniejących odpowiedzi. Otrzymujesz taki sam błąd "Niezakryty błąd literowy", jeśli podasz wartość char z nieprawidłowym formularzem Unicode. Podobnie jak podczas pisania:

char HI = '\3072'; 

trzeba używać odpowiedniego formularza, który jest:

char HI = '\u3072';