Java字符串数组双引号错误

时间:2013-06-23 18:17:40

标签: 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]);
    }

5 个答案:

答案 0 :(得分:9)

看起来你有一个逃脱角色

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

如果你想要实际角色\,你也需要逃避它:\\

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

官方Java教程

请参阅官方java教程中的section on escape sequences

  

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

语言规范

这当然与language specification

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

related question

更广泛的观点

维基百科也有关于转义字符的interesting article

  

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

注意到:

  

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

以下是关于转义字符串的another related question here on SO

答案 1 :(得分:2)

这是因为您正在使用转义字符。\"会导致"被考虑,添加\\"

man={"______",
          "|    |",
          "|    o",
          "|    |",
          "|   /|\\",  \\ and extra slash here
          "|    |",
          "|   / \\"   \\ and here
         };

答案 2 :(得分:2)

你也声明了数组的错误,如果你使用initializater必须以这种方式导致,如果不是你必须为数组提供大小。

String[] man = new String[]{"______",
             "|    |",
             "|    o",
             "|    |",
             "|   /|\\",
             "|    |",
             "|   / \\"
            };

答案 3 :(得分:0)

\是一个转义字符。你必须再次逃避它,所以最后一行应该是:

"|   / \\"

答案 4 :(得分:0)

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]);
}

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

  1. 在匿名初始化数组时,在声明中初始化是一个很好的做法。喜欢 String [] man = new String [] {“ _ ”,“| |”};