Создание ASCII Art на Java

1

Поэтому для моего введения в класс Java я предполагаю создать пряничного человека с ASCII. Это первое задание, поэтому класс пока только покрыл только статусы println. Я использую Eclipse IDE для Java-разработчиков на 64-разрядной OSX.

Это то, что я имею прямо сейчас:

import acm.program.*;

public class ASCIIArtProgram extends ConsoleProgram {

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

}

По какой-то причине я получаю ошибки в строке 7. Он постоянно меняет ползунки на двоеточие.

Ошибки:

  • Ошибка синтаксиса на токене "_", недействительный AssignmentOperator

  • Строковый литерал неправильно закрывается двойной кавычкой

Предполагается, что программа выводит это:

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

Я смущен тем, что делаю неправильно.

  • 1
    Вы должны прочитать больше об основах Java. Пожалуйста, обратитесь к «escape-персонажам». Проверьте эту страницу здесь ссылку
  • 0
    @MeenaO - Оформить заказ.
Теги:
macos

4 ответа

4

Где у вас есть

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

цитата внутри вашей строки завершает строку. Так работают цитируемые строки. Если вы хотите напечатать цитату внутри строки, вам нужно иметь

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

Вы также обнаружите, что вам нужно также заменить напечатанную \ на \\, так как \ по своему усмотрению имеет особое значение "escape next character".

т.е.

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

Присмотритесь...

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

Вы открываете, закрываете и открываете кавычки: " _(" является правильным String литералом " )_ " является мусором в отношении компилятора, так как это не любая действительная команда Java, которую он может интерпретировать.

Например, вам нужно избежать второй цитаты...

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

Это заставит Java игнорировать его и рассматривать его как (буквально) как часть содержимого String...

\ Также имеет особое значение, как вы видели, вам также нужно избегать этого...

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

Вам нужно избежать специальных символов, которые вы хотите распечатать, потому что компилятор не знает, если ваш " означает print " или start/stop a String. То же самое касается \.

Чтобы избежать символа, просто напишите \ infront. Так:

  • " становится \"
  • \ становится \\

Вы можете больше узнать о символах и экранировать в учебниках Java от Oracle.

0

Вам нужно процитировать обратную косую черту

используйте \\ вместо \ в ваших строках

таким образом:

println(" / : \\ ");

здесь список всех символов, которые вам нужно будет убежать/цитировать, когда вы хотите использовать их в строковом литерале

Ещё вопросы

Сообщество Overcoder
Наверх
Меню