I programmi Java senza un'interfaccia utente grafica utilizzano la riga di comando di un computer per interagire con l'utente. È fondamentale che l'output della riga di comando del programma sia formattato e spaziato correttamente in modo che sia comprensibile per l'utente. Puoi spaziare manualmente l'output con i loop o tramite la classe Formatter di Java.
Caratteri a spaziatura fissa
I caratteri a spaziatura fissa sono caratteri in cui ogni lettera occupa la stessa quantità di spazio delle altre lettere nel carattere. Ad esempio, in un carattere a spaziatura fissa, il carattere "i" occupa la stessa quantità di spazio del carattere "m". L'esecuzione di programmi Java in un ambiente con caratteri a spaziatura fissa, come la riga di comando di Windows o il terminale Macintosh, consente di disporre e formattare il testo in colonne ordinate contando il numero di caratteri in ciascuna riga.
Spaziatura manuale
Il modo più semplice per spaziare correttamente l'output in Java è aggiungere la spaziatura manuale. Ad esempio, per produrre tre diversi numeri interi, "i", "j" e "k", con uno spazio tra ogni numero intero, utilizza il codice seguente:
System.out.println (i + "" + j + "" + k);
Se i valori di "i", "j" e "k" sono rispettivamente 25, 6 e 31, il programma restituisce "25 6 31". Lo svantaggio principale di questo metodo è la mancanza di considerazione per il numero di caratteri in ogni numero intero. Se stampi tre righe di colonne equidistanti, la seconda colonna non avrà la stessa larghezza delle prime due. Se la riga successiva contenesse i valori 6, 8 e 2, le colonne sarebbero completamente disallineate.
Spaziatura del formattatore
La classe Formatter di Java consente di formattare i dati prima che vengano emessi. Con il formattatore, è possibile definire la larghezza massima di un valore e il formattatore quindi riempie automaticamente il valore con spazi vuoti per assicurarsi che sia della stessa larghezza. Se restituisci più valori con le stesse opzioni di formattazione, puoi assicurarti che occupino lo stesso spazio nella riga di output. L'output di un segmento di testo formattato è semplice: invece di usare "System.out.print ()," usa "System.out.format ()." Il metodo di formattazione accetta due input invece del singolo input utilizzato dal metodo di stampa. Il primo input è una stringa che rappresenta la formattazione da applicare all'output e il secondo input è l'output stesso. Per stampare tre valori interi con un massimo di tre caratteri in ciascuno e un singolo spazio in mezzo, utilizzare il codice seguente:
System.out.format ("% 4d", i); System.out.format ("% 3d", j); System.out.format ("% 3d", k); System.out.println ();
Il "% 4" nella prima sezione della stringa di formato indica che il programma deve utilizzare quattro caratteri per stampare ogni numero intero. Se il numero intero è lungo solo due caratteri, gli altri due caratteri saranno spazi vuoti. La "d" nella stringa di formato indica che il valore di output è un numero intero decimale. L'ultima riga di codice "System.out.println ()" sposta il cursore alla riga di codice successiva.
Spaziatura loop
La classe Formatting richiede una conoscenza approfondita delle stringhe utilizzate per definire il formato di output. Tuttavia, puoi invece utilizzare una combinazione di cicli per ottenere una spaziatura più complessa senza la necessità di stringhe di formato complicate. I loop sono particolarmente utili quando si cerca di ottenere una spaziatura uniforme tra più stringhe. Ad esempio, puoi prendere due matrici di stringhe e visualizzarne il contenuto in due colonne parallele utilizzando due cicli. Il primo ciclo attraversa entrambi gli array e trova la lunghezza della stringa più lunga in entrambi gli array. Il secondo ciclo attraversa nuovamente gli array. Stampa la stringa dal primo array e quindi sottrae la lunghezza della prima stringa dalla lunghezza della stringa più lunga in entrambi gli array per scoprire quanti spazi è necessario posizionare prima della colonna successiva. Il programma quindi stampa quel numero di spazi con il seguente ciclo annidato:
for (int i = 0; i <numSpaces; i ++) {System.out.print (""); }
Dopo aver stampato il numero corretto di spazi, stampa la seconda stringa. Questo crea due colonne di stringhe equidistanti senza la necessità di Java's Formatter.