2013-06-27 7 views
16

Haben Sie den Fehler „Unclosed Zeichenliteral“, mit BlueJ, beim Schreiben:Unclosed Zeichenliteral Fehler

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

Aber ich kann nicht herausfinden, was falsch ist. Irgendeine Idee?

Danke.

+1

Strings in Java müssen in doppelte Anführungszeichen eingeschlossen werden. Verwende '" Hallo "'. –

+0

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

+0

Ok, also habe ich auch viele antworten auf die Korrektur der Antwort, aber warum 'String in" "und' char' in ""? –

Antwort

30

In Java können einfache Anführungszeichen nehmen nur ein Zeichen, mit Flucht, wenn nötig. Sie müssen voll Anführungszeichen verwenden, wie für Streicher folgt:

y = "hello"; 

Sie verwendet auch

System.out.println(g); 

, die ich sollte

System.out.println(y); 

Hinweis sein annehmen: Wenn char Werte machen (Sie werden sie wahrscheinlich später verwenden) Sie benötigen einfache Anführungszeichen. Zum Beispiel:

char foo='m'; 
0

'' umfasst einzelne char, während "" eine String umschließt.

ändern

y = 'hello'; 

->

y = "hello"; 
6

Java verwendet doppelte Anführungszeichen für "String" und einfache Anführungszeichen für 'C' haracters.

1

Zeichenfolge y = "Hallo";

würde funktionieren (beachten Sie die Anführungszeichen).

char y = 'h'; Dies funktioniert für Zeichen (beachten Sie die einfachen Anführungszeichen)

aber der Typ ist der Schlüssel: '' (einfache Anführungszeichen) für ein Zeichen, "" (doppelte Anführungszeichen) für Zeichenfolge.

2

Ich möchte eine kleine Ergänzung zu den vorhandenen Antworten geben. Sie erhalten den gleichen "Unclosed Character Literal error", wenn Sie einem Char mit falscher Unicode-Form Wert geben. Wie, wenn Sie schreiben:

char HI = '\3072'; 

Sie haben die richtige Form zu verwenden, die ist:

char HI = '\u3072';