Avstånd mellan utdata i Java

Java-program utan ett grafiskt användargränssnitt använder en dators kommandorad för att interagera med användaren. Det är viktigt att programmets kommandoradsutmatning är korrekt formaterad och placerad så att den är lättförståelig för användaren. Du kan placera utdata manuellt med loopar eller genom Java: s Formatter-klass.

Monospaced typsnitt

Enstaka teckensnitt är teckensnitt där varje bokstav tar upp lika mycket utrymme som de andra bokstäverna i teckensnittet. Till exempel, i ett teckensnitt med monospace tar tecknet "i" samma mängd utrymme som tecknet "m." Att köra Java-program i en miljö med enstaka teckensnitt, till exempel Windows Command Line eller Macintosh Terminal, låter dig ordna och formatera din text i snygga kolumner genom att räkna antalet tecken i varje rad.

Manuellt avstånd

Det enklaste sättet att korrekt placera utdata i Java är att lägga till manuellt avstånd. För att till exempel mata ut tre olika heltal, "i", "j" och "k", med ett mellanslag mellan varje heltal, använd följande kod:

System.out.println (i + "" + j + "" + k);

Om värdena för "i", "j" och "k" är 25, 6 respektive 31, matar programmet ut "25 6 31." Metodens främsta nackdel är bristen på hänsyn till antalet tecken i varje heltal. Om du skriver ut tre rader med jämnt fördelade kolumner kommer inte den andra kolumnen att ha samma bredd som de två första. Om nästa rad innehöll värdena 6, 8 och 2 skulle kolumnerna vara helt feljusterade.

Formateringsavstånd

Java: s Formatter-klass låter dig formatera data innan de matas ut. Med formateraren kan du definiera den maximala bredden för ett värde och formateraren sedan automatiskt mata in värdet med tomma mellanslag för att se till att det har samma bredd. Om du matar ut flera värden med samma formateringsalternativ kan du se till att de tar samma utrymme i utdataraden. Att skriva ut ett formaterat segment är enkelt - snarare än att använda "System.out.print ()," använd "System.out.format ()." Formateringsmetoden tar två ingångar istället för den enda ingång som utskriftsmetoden använder. Den första ingången är en sträng som representerar formateringen som ska tillämpas på utgången, och den andra ingången är själva utgången. För att skriva ut tre heltalsvärden med högst tre tecken i vardera och ett mellanrum mellan,använd följande kod:

System.out.format ("% 4d", i); System.out.format ("% 3d", j); System.out.format ("% 3d", k); System.out.println ();

"% 4" i den första delen av formatsträngen anger att programmet ska använda fyra tecken för att skriva ut varje heltal. Om heltalet bara är två tecken långt kommer de andra två tecknen att vara tomma blanksteg. "D" i formatsträngen anger att utgångsvärdet är ett decimaltal. Den sista raden med kod "System.out.println ()" flyttar markören till nästa kodrad.

Avstånd mellan slingor

Formateringsklassen kräver omfattande kunskap om strängarna som används för att definiera utdataformatet. Du kan dock istället använda en kombination av slingor för att uppnå mer komplex avstånd utan behov av komplicerade formatsträngar. Slingor är särskilt användbara när man försöker uppnå jämnt avstånd mellan flera strängar. Du kan till exempel ta två strängmatriser och visa deras innehåll i två parallella kolumner med två slingor. Den första slingan går genom båda matriserna och hittar längden på den längsta strängen i endera matrisen. Den andra slingan går igenom matriserna igen. Den skriver ut strängen från den första matrisen och subtraherar sedan längden på den första strängen från längden på den längsta strängen i endera matrisen för att ta reda på hur många mellanslag den behöver placera före nästa kolumn.Programmet skriver sedan ut det antalet mellanslag med följande kapslade slinga:

för (int i = 0; i <numSpaces; i ++) {System.out.print (""); }

Efter att ha skrivit ut rätt antal mellanslag skriver den ut den andra strängen. Detta skapar två jämnt fördelade kolumner av strängar utan behov av Java's Formatter.