символ неправильно отображается в Java
-
08-07-2019 - |
Вопрос
Я пытался " .
" для отображения двух пробелов в стандартной выходной строке Java.Пытаясь System.out.println("__");
<---- (два пробела, но, очевидно, это сокращает его до одного пробела, отсюда и подчеркивание)
Я полагаю, что есть способ избежать
, но я не могу ни разобраться в этом, ни найти помощь в Интернете.Поиск этого является ироничным, потому что много буквальных
появляйся.
Будем признательны за любую помощь.
Редактировать:
for (int j = 0; j < COLUMNS; j++)
if (j < 10){
r += "__";
}
создает 10 пробелов, а не 20, как ожидалось при печати
извините, я все еще новичок в форматировании здесь
Решение
это специфичная для HTML кодировка.
Вы были правы в первый раз - строка Java, которая соответствует двум пробелам, - это просто два пробельных символа, например
String s = " ";
Вызов println(), который вы пытались следовало бы чтобы это сработало.Что вы сделали такого, что заставило вас поверить, что он был урезан до одного места?Я думаю, ваша проблема в другом...
Редактировать:
Основываясь на вашем фрагменте кода - это COLUMNS
5, случайно?:-)
ОТРЕДАКТИРУЙТЕ ЕЩЕ РАЗ:
Хорошо, если COLUMNS равно 15, то этот код приведет к r
с добавлением к нему двадцати пробелов.Если вы хотите быть действительно уверены, вы можете либо выполнить пошаговое выполнение в отладчике, либо поместить инструкцию logging над r +=
строку, чтобы точно увидеть, сколько раз вызывается оператор.
Также взгляните на то, как r
используется позже, прежде чем его выходные данные будут напечатаны в том месте, которое вы проверяете;возможно, его значение в какой-то момент усекается, либо явно в Java, либо, возможно, даже неявно (например, сохраняется в столбце базы данных, который слишком узок на 10 символов, прежде чем быть извлеченным и отображенным позже).
Другие советы
Если вам по какой-либо причине нужен неразрывный пробел в вашей строке, вы должны использовать литерал Unicode:
System.out.println("banana\u00A0phone");
Вам не нужно использовать в Java. System.out.print(" ");
должно сработать.Попробуйте что-то вроде:
System.out.print("This is the a string before spaces" + " " + "this is a string after spaces");
Вы также можете создать неразрывный пробел, удерживая клавишу Alt и набрав 0160 на цифровой клавиатуре.