用Java创建ASCII艺术

时间:2014-10-02 06:55:03

标签: java eclipse macos

因此,对于我的Java类简介,我想用ASCII创建一个姜饼人。这是第一个作业,因此该类目前仅涵盖了println的规定。我在OSX 64位上使用Eclipse IDE for Java Developers。

这就是我现在所拥有的:

import acm.program.*;

public class ASCIIArtProgram extends ConsoleProgram {

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

}

某些原因我在第7行遇到错误。它不断将分号改为冒号。

错误:

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

  • 无效
  • 双引号

  • 未正确关闭字符串文字

该程序假设输出:

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

我很困惑我做错了什么。

4 个答案:

答案 0 :(得分:5)

你在哪里

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

字符串中的引号正在终止字符串。这就是引用字符串的工作原理。 如果要在字符串中打印引用,则需要

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

您还会发现需要将打印的\替换为\\,因为\本身具有&#34的特殊含义;转义下一个字符& #34;

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

答案 1 :(得分:2)

您必须转义要打印的特殊字符,因为编译器不知道您的"print "还是start/stop a String。同样适用于\

要逃避角色,只需在其前面写\即可。所以:

  • "变为\"
  • \变为\\

您可以在Oracle的Java Tutorials中阅读有关字符和转义的更多信息。

答案 2 :(得分:1)

仔细看看......

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

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

你需要逃避第二个引用,例如......

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

这将使Java忽略它并将其视为(字面上)作为String内容的一部分......

\也有特殊意义,正如你所见,你也需要逃脱它......

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

答案 3 :(得分:0)

你需要引用反斜杠

在字符串中使用\\代替\

因此:

println(" / : \\ ");

here当你想在字符串文字中使用它们时,你必须要转义/引用的所有字符的列表