2014-10-02 58 views
1

因此,对于我的Java类介绍,我想用ASCII创建一个姜饼人。这是第一项任务,所以该课程目前仅涵盖了println的说明。我在OSX 64位上使用适用于Java开发人员的Eclipse IDE。在Java中创建ASCII艺术

这就是我现在所拥有的:

import acm.program.*; 

public class ASCIIArtProgram extends ConsoleProgram { 

    public void run() { 
     println(" _ "); 
     println(" _(")_ "); 
     println("(_ . _)"); 
     println("/: \ "); 
     println("(_/ \_)"); 
    } 

} 

一些原因,我得到第7行这不断变化的分号变成冒号错误。

错误:

  • 语法令牌 “_” 的错误,无效AssignmentOperator

  • 字符串是不正确的用双引号

程序是假设关闭输出:

_ 
_(")_ 
(_ . _) 
/: \ 
(_/ \_) 

我很困惑我做错了什么。

+1

您需要阅读更多关于Java基础知识。请参阅“转义字符”。点击此处查看[链接](http://docs.oracle.com/javase/tutorial/java/data/characters.html) – 2014-10-02 06:59:08

回答

4

如果你有

println(" _(")_ "); 
      ^

报价您的字符串内被终止的字符串。这就是引用字符串的工作方式。 如果您想要打印报价一个字符串,你需要有

println(" _(\")_ "); 

你还会发现,你需要更换打印\\\为好,因为\对自己有特殊的“逃避下一个角色”的含义。

public void run() { 
    println(" _ "); 
    println(" _(\")_ "); 
    println("(_ . _)"); 
    println("/: \\ "); 
    println("(_/ \\_)"); 
} 
0

您需要引用反斜杠

使用\\代替\在你的字符串

这样的:

println("/: \\ "); 

here所有字符的列表你会hav E脱离/报价,当你想在一个字符串

1

采取仔细看看使用它们...

println(" _(")_ "); 
     ^---^---^ 

你打开,关闭和打开引号," _("是正确的String文字,就编译器而言,)_ "是垃圾,因为它不是它可以解释的任何有效的Java命令。

您需要转义第二个引号,例如...

println(" _(\")_ "); 

这将使得Java忽略它并把它作为(字面)作为String S含量的一部分......

\也具有特殊的意义,正如你所看到的,你还需要逃吧......

println("/: \\ "); 
println("(_/ \\_)"); 
1

你要逃避要打印特殊字符,因为编译器不知道,如果你的"意味着print "start/stop a String\也是如此。

为了逃避一个角色,只需在它的前面写一个\即可。所以:

  • "成为\"
  • \成为\\

你可以阅读更多有关的字符,并在Java Tutorials从Oracle逃逸。