1

当我写出我的字符串时,它告诉我字符串文字没有正确关闭,但看起来它是..?然后如果我取出 /|\ 错误会向下移动 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]);
    }
4

5 回答 5

9

看起来你有一个转义字符

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

如果你想要实际的字符\,你也需要转义它:\\

 String[] man = new String[]{
              "|    |",
              "|    o",
              "|    |",
              "|   /|\\",  \\<- note the extra \
              "|    |",
              "|   / \\"   \\<- note the extra \ here too
             };

官方 Java 教程

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

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

语言规范

这当然符合语言规范

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 */

相关问题

更广阔的视野

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

在计算和电信中,转义字符是对字符序列中的后续字符调用替代解释的字符。转义字符是元字符的一种特殊情况。通常,判断某事物是否为转义字符取决于上下文。

注意:

C、C++、Java 和 Ruby 都允许完全相同的两种反斜杠转义样式。

这是关于转义字符串的另一个相关问题。

于 2013-06-23T18:18:48.433 回答
2

这是因为您使用的是 excape 字符.. 需要考虑的\"原因,添加"\\"

man={"______",
          "|    |",
          "|    o",
          "|    |",
          "|   /|\\",  \\ and extra slash here
          "|    |",
          "|   / \\"   \\ and here
         };
于 2013-06-23T18:20:02.567 回答
2

您还声明了错误的数组,如果您使用初始化器必须以这种方式,否则您必须为数组提供大小。

String[] man = new String[]{"______",
             "|    |",
             "|    o",
             "|    |",
             "|   /|\\",
             "|    |",
             "|   / \\"
            };
于 2013-06-23T18:21:18.047 回答
0

公共静态无效 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]);
}

建议: 1. 在代码中使用的每一个\前加一个额外的\。

  1. 当您匿名初始化数组时,在声明中进行初始化是一种很好的做法。像 String []man=new String[]{" _ ","| |"};
于 2013-06-23T18:36:03.587 回答
0

\是一个转义字符。您必须再次对其进行转义,因此最后一行应如下所示:

"|   / \\"
于 2013-06-23T18:19:48.307 回答