Как выровнять строку на выходе консоли
Мне нужно написать код для:
![Multiplication Tables Description: Print out the grade school multiplication table upto 12*12]()
Я написал код:
public class tables {
public static void main(String[] args) {
//int[][] table = new int[12][12];
String table="";
for(int i=1; i<13; i++){
for(int j=1; j<13; j++){
//table[i-1][j-1] = i*j;
table+=(i*j)+" ";
}
System.out.println(table.trim());
table="";
}
}
}
Но проблема заключается в выходном формате. Мне нужен вывод в матрице как мода, каждый номер отформатирован до ширины 4 (цифры выровнены по правому краю и вычеркивают ведущие/конечные пробелы в каждой строке). Я пробовал google, но не нашел хорошего решения моей проблемы. Кто-нибудь может мне помочь?
Ответы
Ответ 1
Вы можете использовать format()
для форматирования вывода в соответствии с вашими потребностями.
for(int i=1; i<13; i++){
for(int j=1; j<13; j++){
System.out.format("%5d", i * j);
}
System.out.println(); // To move to the next line.
}
Или вы также можете использовать: -
System.out.print(String.format("%5d", i * j));
вместо System.out.format
..
Вот объяснение , как %5d
работает: -
- Во-первых, поскольку мы печатаем целое число, мы должны использовать
%d
, который является спецификатором формата для целых чисел.
-
5
в %5d
означает полную ширину вашего вывода. Итак, если ваше значение равно 5, оно будет напечатано, чтобы покрыть 5 пробелов, таких как: - ****5
-
%5d
используется для align right. Для выравнивания влево вы можете использовать %-5d
. Для значения 5
это напечатает ваш результат как: - 5****
Ответ 2
В моем примере массив содержит строку символов различной длины, и из-за этого мне не удалось упорядочить строку, а другие строки из разных массивов были неправильно сопоставлены на консоли. с другой концепцией я мог бы организовать эти
массивы на консоли мои коды, как показано ниже.
package arrayformat;
/**
*
* @author Sunil
*/
public class ArrayFormat {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
int[] productId = new int[]
{1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,};
String[] productName= new String[]{"Pepsi","kissan jam","Herbal
oil","Garnier man's","Lays chips","biscuits","Bournvita","Cadbury","Parker
Vector","Nescafe",};
String[] productType = new String[]{"Cold Drink","Jam","Oil","Face
wash","chips","Biscuits","Health
Supplement","Chocolate","Stationary","Coffee",};
float[] productPrice = new float[]{24,65,30,79,10,20,140,20,150,80,};
int productNameMaxlength=0;
int productTypeMaxlength=0;
for (String productName1 : productName) {
if (productNameMaxlength < productName1.length()) {
productNameMaxlength = productName1.length();
}
}
for (String productType1 : productType) {
if (productTypeMaxlength < productType1.length()) {
productTypeMaxlength = productType1.length();
}
}
for(int i=0;i<productType.length;i++)
{
System.out.print(i);
System.out.print("\t");
System.out.print(productId[i]);
System.out.print("\t");
System.out.print(productName[i]);
for(int j=0;j<=productNameMaxlength-productName[i].length
();j++)
{
System.out.print(" ");
}
System.out.print("\t");
System.out.print(productType[i]);
for(int j=0;j<=productTypeMaxlength-productType[i].length
();j++)
{
System.out.print(" ");
}
System.out.print("\t");
System.out.println(productPrice[i]);
}
}
}
and output is--
Sr.No ID NAME TYPE PRICE
0 1001 Cadbury Chocolate 20.0
1 1002 Parker Vector Stationary 150.0
2 1003 Nescafe Coffee 80.0
3 1004 kissan jam Jam 65.0
4 1005 Herbal oil Oil 30.0
5 1006 Garnier man Face wash 79.0
6 1007 Lays chips chips 10.0
7 1008 biscuits Biscuits 20.0
8 1009 Bournvita Health Supplement 140.0
9 1010 Pepsi Cold Drink 24.0
Поскольку я не могу ответить на свой вопрос, где я задаю свой вопрос из-за блока, чтобы задать вопрос и ответ, я цитирую свой ответ, и это был другой формат массива, который я чувствую.
Ответ 3
Форматирование вывода может быть выполнено с использованием метода System.out.format( "," "), этот метод содержит два входных параметра, которые сначала определяют стиль форматирования, а второе определяют значение для печати. Предположим, вы хотите, чтобы значение n-значного значения выровнялось вправо. вы передадите первый параметр" % 4d".
Для левого выравнивания используйте -ve% -nd
Для правильного выравнивания используйте + ve% nd
for(int i=1; i<13; i++){
for(int j=1; j<13; j++){
System.out.format("%4d", i * j); //each number formatted to a width of 4 so use %4d in the format method.
}
System.out.println(); // To move to the next line.
}