Поэтому для моего введения в класс 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
Строковый литерал неправильно закрывается двойной кавычкой
Предполагается, что программа выводит это:
_
_(")_
(_ . _)
/ : \
(_/ \_)
Я смущен тем, что делаю неправильно.
Где у вас есть
println(" _(")_ ");
^
цитата внутри вашей строки завершает строку. Так работают цитируемые строки. Если вы хотите напечатать цитату внутри строки, вам нужно иметь
println(" _(\")_ ");
Вы также обнаружите, что вам нужно также заменить напечатанную \
на \\
, так как \
по своему усмотрению имеет особое значение "escape next character".
т.е.
public void run() {
println(" _ ");
println(" _(\")_ ");
println("(_ . _)");
println(" / : \\ ");
println("(_/ \\_)");
}
Присмотритесь...
println(" _(")_ ");
^---^---^
Вы открываете, закрываете и открываете кавычки: " _("
является правильным String
литералом " )_ "
является мусором в отношении компилятора, так как это не любая действительная команда Java, которую он может интерпретировать.
Например, вам нужно избежать второй цитаты...
println(" _(\")_ ");
Это заставит Java игнорировать его и рассматривать его как (буквально) как часть содержимого String
...
\
Также имеет особое значение, как вы видели, вам также нужно избегать этого...
println(" / : \\ ");
println("(_/ \\_)");
Вам нужно избежать специальных символов, которые вы хотите распечатать, потому что компилятор не знает, если ваш "
означает print "
или start/stop a String
. То же самое касается \
.
Чтобы избежать символа, просто напишите \
infront. Так:
"
становится \"
\
становится \\
Вы можете больше узнать о символах и экранировать в учебниках Java от Oracle.
Вам нужно процитировать обратную косую черту
используйте \\
вместо \
в ваших строках
таким образом:
println(" / : \\ ");
здесь список всех символов, которые вам нужно будет убежать/цитировать, когда вы хотите использовать их в строковом литерале