Java字符串数组双引号错误

bgs*_*eff 1 java

当我写出我的字符串时,它告诉我字符串文字没有正确关闭,但看起来它是......?然后,如果我取出/ | \,错误向下移动2行到腿.我研究过,似乎无法知道问题是什么......

public static void printMan(int badGuesses) {
    String[] man = new String[];
             man={"______",
                  "|    |",
                  "|    o",
                  "|    |",
                  "|   /|\", //it tells me that i need to insert missing quote
                  "|    |",
                  "|   / \"
                 };
    int counter = 0;
    while (counter < badGuesses) {
        System.out.println(man[counter]);
    }
Run Code Online (Sandbox Code Playgroud)

Ben*_*aum 9

看起来你有一个逃脱角色

\是一个转义字符,在这种情况下你也需要逃避它.否则,你会得到一个未终止的字符串.\"表示实际字符,"而不是字符串的开头或结尾.

如果你想要实际的角色\你也需要逃脱它:\\

 String[] man = new String[]{
              "|    |",
              "|    o",
              "|    |",
              "|   /|\\",  \\<- note the extra \
              "|    |",
              "|   / \\"   \\<- note the extra \ here too
             };
Run Code Online (Sandbox Code Playgroud)

官方Java教程

请参阅官方java教程中有关转义序列部分:

以反斜杠(\)开头的字符是转义序列,对编译器具有特殊含义.下表显示了Java转义序列(me:链接中的表)

语言规范

这当然符合语言规范:

StringLiteral:
   "StringCharacters"

  StringCharacters:
   StringCharacter
   | StringCharacters StringCharacter

  StringCharacter:
   InputCharacter but not " or \
   | EscapeSequence


EscapeSequence:
    \ b    
    \ t   
    \ n   
    \ f   
    \ r    
    \ "   
    \ '  
    \ \  < -  **THIS IS THE ONE YOU HAD**
    OctalEscape   /* \u0000 to \u00ff: from octal value */
Run Code Online (Sandbox Code Playgroud)

(相关问题)

更广泛的观点

维基百科也有一篇关于转义字符的有趣文章:

在计算和通信中,转义字符是一个字符,它对字符序列中的后续字符调用另一种解释.转义字符是元字符的特殊情况.通常,判断某事物是否属于逃避角色取决于背景.

注意到:

C,C++,Java和Ruby都允许完全相同的两个反斜杠转义样式.

这里是关于逃避字符串的另一个相关问题.

  • @MarounMaroun这是一个微不足道的问题,因此我不想要代表它.另一方面,它是很多用户所知道的东西,所以它很快就得到了很多不同用户的大量编辑 - 这样做可以让我们产生快速高质量的答案. (2认同)