Професионална програма
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 6846 Точки

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

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 6846 Точки

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

1