How to align my results to look like columns

2020-05-01 07:47发布

问题:

Any ideas on how to line up my results so it looks like a Multiplication Table? This is a project from school and the teacher wants us to explore different ways to format our code. Any ideas will be greatly appreciated.

public class MultiplicationTableBuilder {


    public static void main(String[] args) {



    System.out.println("  1  2  3  4  5  6  7  8  9  10  ");
    System.out.println("----------------------------------------");

    // Nested For loops to build multiplication table
    for(int number1 = 1; number1 <= 10; number1++)
    {
        System.out.printf(number1 + "  |");

        for(int number2 = 1; number2 <= 10; number2++)
        {
            System.out.printf("  " + (number1 * number2));
        }
        System.out.println("  | ");
    }
}

Also does anyone else agree with me on feeling like Week 4 is a little early for nested loops and classes (last lesson)? Maybe I'm just getting overwhelmed.

回答1:

Use String#format or System.out.printf to generate formatted output, for example

    System.out.printf("%5s %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d%n", "", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

    System.out.println("-------------------------------------------------");

    // Nested For loops to build multiplication table
    for (int number1 = 1; number1 <= 10; number1++) {
        System.out.printf("%3d | ", number1);

        for (int number2 = 1; number2 <= 10; number2++) {
            System.out.printf("%3d ", (number1 * number2));
        }
        System.out.println("  | ");
    }

Output...

        1   2   3   4   5   6   7   8   9  10
-------------------------------------------------
  1 |   1   2   3   4   5   6   7   8   9  10   | 
  2 |   2   4   6   8  10  12  14  16  18  20   | 
  3 |   3   6   9  12  15  18  21  24  27  30   | 
  4 |   4   8  12  16  20  24  28  32  36  40   | 
  5 |   5  10  15  20  25  30  35  40  45  50   | 
  6 |   6  12  18  24  30  36  42  48  54  60   | 
  7 |   7  14  21  28  35  42  49  56  63  70   | 
  8 |   8  16  24  32  40  48  56  64  72  80   | 
  9 |   9  18  27  36  45  54  63  72  81  90   | 
 10 |  10  20  30  40  50  60  70  80  90 100   | 

Take a look at Java For Complete Beginners - formatted strings for more details about the format qualifiers



回答2:

Instead of providing the code, I want to point you to some examples and documentations:

I think this is what you are looking for:

http://examples.javacodegeeks.com/core-java/lang/string/java-string-format-example/

Also have a look at the documentation from Oracle:

http://docs.oracle.com/javase/tutorial/java/data/numberformat.html

The keyword you should be searching for is 'java formatter'

After reading these links, you might wonder what is the difference between the printf method and the format method, here is the answer:

System.out.printf vs System.out.format