Also generell hat Java die Möglichkeit, Dinge zu formatieren.
Dazu kann man dann, so wie von
@Wurstkopp vorgeschlagen, die Klasse NumberFormat benutzen. Aber Da du ja mehrere Werte ausgeben willst und du derzeit das mit vielen String Objekten löst, wäre String.format die bessere Wahl:
String.format("%d x %d = %d",j, i, i * j);
wäre erst einmal deine bisherige Lösung ohne String Concatenation.
Nun kann man noch die %d, welche Platzhalter sind für Zahlen, mit Format-Anweisungen belegen:
%10d würde die Zahl immer mit 10 Zeichen darstellen (Leerzeichen aufgefüllt) also z.B. " 1"
%010d ist wie oben, nur statt Leerzeichen würden 0 verwendet, also z.B. "0000000001"
%-10d macht es linksbündig also z.B. "1 "
Wenn man positive wie negative zahlen bringen will:
% d lässt ein Leerzeichen für das +, das - ist ehh Standard und würde halt den Platz, den es braucht, bekommen.
Mit einem %+d würde das + Zeichen immer angezeigt bei positiven Zahlen.
Bei dem Leerzeichen und + lässt sich natürlich noch die Anzahl der Ziffern hinzufügen ...
Mehr zu den Formatierungsmöglichkeiten findet sich z.B. unter
https://dzone.com/articles/java-string-format-examples
Und String.format gibt ja den formatierten String zurück. Und den willst Du ja ausgeben, also brauchst Du sowas wie
System.out.println(String.format("....", ....));