Loading...

Интересен IntelliJ Казус

Здравейте, колеги. 

Прилагам част от моето домашно, с интересна липсваща табулация в изхода на конзолата. Смятам не добро решение на дизайнерите може би. 

Това е кода: 

public class Main {

    public static void main(String[] args) {

        int firstValue = 123456;
        int secondValue = 7891011;
        int resultValue = firstValue+secondValue;

        System.out.println();
        System.out.println ("The result value of\t" + firstValue + "+" + secondValue + " is\t" + resultValue);
        System.out.println();
        System.out.println ("The result value of \t" + firstValue + "+" + secondValue + " is\t" + resultValue);
        System.out.println();
    }
}

 Забележете, че когато има интервал преди "\t" тя вече се появява, докато след "is" дори без интервал я има табулацията :):)

A най-интересното е, че при копиране на изхода (отдолу) в текстов файл всичко е наред.

Дали това е бъг в IntelliJ или грешката е в моя телевизор :):) ??

The result value of    123456+7891011 is    8014467

The result value of     123456+7891011 is    8014467

Тагове:
0
QA Fundamentals
Eljunia avatar Eljunia 22 Точки
Best Answer

Здравей, Гергана!

Казусът не е свързан с IntelliJ , а по-скоро с табулациите на конзолата, които в случая изглежда се състоят от 4 интервала.

Изразът, който отпечатваш в случая, се състои от 19 символа.

В първия случай, когато нямаш зададен интервал в края на стринга, който подаваш към конзолата, последната (пета) табулация се случва на един интервал разстояние след последния символ ('f') и затова така ти се струва, че табулация няма и че е добавен интервал. А всъщност табулация има, но тя само допълва до 4 последната тройка символи с един интервал.

Във втория случай, когато имаш добавен интервал в края на стринга, петата табулация е попълнена (броят символи е 20 и е кратен на 4). В този случай се добавя следващата (шеста) табулация, която е пълна - състои се от 4 интервала (и още един отпред, който добавяш в командата - стават 5 интервала).

В текстовия файл, ако има табулация (а изглежда има), тя е зададена с друг брой символи (вижда ми се да са 3 или 7 ?) и затова изглежда по друг начин.

Така че не е нито бъг, нито твоя грешка - често се налага да се понагласи изходът към конзолата, за да изглежда четлив и подреден.

5
RoYaL avatar RoYaL Trainer 6849 Точки

Супер обяснение :) Маркирам го като най-добър отговор

1

Благодаря за изчерпателния отговор.

Поиграх си малко и с Notepad и видях, че сумата от символите и интервалите (за табулация) винаги е кратна на 8. Изключение има ако символите са 17. Явно в  IntelliJ е кратно на 4 както споменахте. 

Досега не съм обръщала никакво внимание, когато съм писала документи, че всъщност всичко е до преценка на дизайнерите :)

1
EyubDjelil avatar EyubDjelil 9 Точки

Не съм експерт, но мисля че тези \t \n работят нормално под Windows.Предполагам си със Linux и оттук би дошла разликата.

След проверка виждам , че нямаш space между of и \t на първи ред. - "of\t"

А втори ред ти излиза нормално - "of \t"

0
05/04/2016 00:31:07

С win 8.1 pro съм . явно всеки едитор си прави каквото иска :)

0
RoYaL avatar RoYaL Trainer 6849 Точки

Ами различните едитори по различен начин визуализират табулатора. Например notepad винаги показва като осем спейса, други едитори я показват като четири, а трети - като един. Най-вероятно визуализацията в IntelliJ не е направена да е стриктна.

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.