簡體   English   中英

未閉合字符文字錯誤

[英]Unclosed Character Literal error

使用 BlueJ 時出現錯誤“Unclosed Character Literal”:

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

但我不知道出了什么問題。 任何想法?

謝謝。

在Java中,單引號只能占用一個字符,必要時可以轉義。 您需要對字符串使用完整的引號,如下所示:

y = "hello";

你也用過

System.out.println(g);

我認為應該是

System.out.println(y);

注意:在制作char值時(稍后可能會使用它們),您需要單引號。 例如:

char foo='m';

Java對"String"使用雙引號,對'C' "String"使用單引號。

我想對現有答案做一點補充。 如果為具有不正確的unicode形式的char賦值,則會得到相同的“Unclosed Character Literal error”。 就像你寫的時候:

char HI = '\3072';

你必須使用正確的形式:

char HI = '\u3072';

''包含單個char ,而“”包含一個String

更改

y = 'hello';

- >

y = "hello";

字符串y =“你好”;

會工作(請注意雙引號)。

char y ='h'; 這將適用於字符(請注意單引號)

但類型是關鍵:一個字符的''(單引號),字符串的“”(雙引號)。

Java 中有 8 種原始數據類型。 在此處輸入圖像描述 char就是其中之一。 compiler看到定義了char數據類型時。 它從 JVM 堆分配 memory 的 1 個字節,並期望在具有兩個條件的=符號之后有一個值。

  1. ' (單引號)內的值。
  2. 值為單個字符長。 它可以是單個字符或對應單個字符的有效代碼,您不能使用英文鍵盤輸入。

同樣,String類型的數據類型應該用" (雙引號)括起來,可以有任意長度的字符序列。

在給定的示例中,您混合了charString數據類型的概念。 編譯器清楚地說:

未封閉字符字面量

意思是,您以'單引號開頭,因此編譯器只需要在打開'然后關閉'之后有一個字符。 因此,字符文字被認為是unclosed的,您會看到錯誤。

因此,您要么使用char數據類型,要么使用'單引號將單個字符括起來。 或者使用String數據類型和"雙引號將任意長度的字符序列括起來。

所以,正確的做法是:

String y = "hello";
System.out.println(y);

角色只需要一個價值家伙! 喜歡:char y ='h'; 也許你打字就像char y ='hello'; 或smthg。 祝好運。 對於上面提到的問題,答案很簡單,你必須使用DOUBLE QUOTES來給出一個字符串值。 很容易;)

使用我在下面提到的雙引號你的y數據類型是字符串,它應該是雙引號

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM