用星号完成乘法表

时间:2015-05-21 04:22:55

标签: java for-loop

我想制作一个程序(使用循环),它会显示一个如下所示的表:

      1   2   3   4   5   6   7   8   9   
---------------------------------------
9:    9   *   *   *   *   *   *   *   *
8:    8  16   *   *   *   *   *   *   *
7:    7  14  21   *   *   *   *   *   *
6:    6  12  18  24   *   *   *   *   *
5:    5  10  15  20  25   *   *   *   *
4:    4   8  12  16  20  24   *   *   *
3:    3   6   9  12  15  18  21   *   *
2:    2   4   6   8  10  12  14  16   *
1:    1   2   3   4   5   6   7   8   9

我可以完全打印整个表格(也就是说,没有星号),但是我试图弄清楚如何在循环中插入星号。

到目前为止,我所写的内容如下:

public static void main(String[] args) {
    System.out.print("  |"); 
    for (int a = 1; a < 10; a++){
        int ans = a;
        if (ans < 10) {
            System.out.print("  "+ ans + "  ");
        } else {
            System.out.print(" " + ans + "  ");
        } 

    }System.out.println();
    for (int u = 1; u < 47; u++){
        System.out.print("-");
    } 
    System.out.println();
    for (int i = 9; i > 0; i --) { 
        System.out.print(i + " |");
            for (int c = 1; c < 10; c++) { 
                int ans2 = i * c;
                if (ans2 < 10) {
                System.out.print("  "+ ans2 + "  ");
                } else {
                    System.out.print(" " + ans2 + "  ");
                }
            }
        System.out.println();
    }   
}

我仍然是Java的新手,如果你能帮助我,我将不胜感激。在此先感谢您的回答!

3 个答案:

答案 0 :(得分:0)

此处您没有指定显示'*'的位置。

public static void main(String[] args) {
        System.out.print("  |");
        for (int a = 1; a < 10; a++){
            int ans = a;
            if (ans < 10) {
                System.out.print("  "+ ans + "  ");
            } else {
                System.out.print(" " + ans + "  ");
            }

        }System.out.println();
        for (int u = 1; u < 47; u++){
            System.out.print("-");
        }
        System.out.println();
        for (int i = 9; i > 0; i --) {
            System.out.print(i + " |");
            for (int c = 1; c < 10; c++) {
                int ans2 = i * c;
                if (c < (11 - i)) {
                    if(ans2 < 10) {
                        System.out.print("  " + ans2 + "  ");
                    } else {
                        System.out.print(" " + ans2 + "  ");
                    }
                } else {
                    System.out.print("  *  ");
                }
            }
            System.out.println();
        }
    }

答案 1 :(得分:0)

你的节目很好。我做了一个小小的修正,它运作得很好

添加了一个小逻辑来改变你打印输出的方式(if(c&lt; = 10-i){)并希望你能理解为什么:)

PFB来源

    public static void main(String[] args) {
    System.out.print("  |"); 
    for (int a = 1; a < 10; a++){
        int ans = a;
        if (ans < 10) {
            System.out.print("  "+ ans + "  ");
        } else {
            System.out.print(" " + ans + "  ");
        } 

    }System.out.println();
    for (int u = 1; u < 47; u++){
        System.out.print("-");
    } 
    System.out.println();
    for (int i = 9; i > 0; i --) { 
        System.out.print(i + " |");
            for (int c = 1; c < 10; c++) {
                int ans2 = i * c;
                if(c <= 10-i){ //Tweaked the logic here
                if (ans2 < 10) {
                System.out.print("  "+ ans2 + "  ");
                } else {
                    System.out.print(" " + ans2 + "  ");
                }
                }else {
                    System.out.print(" * ");
                }
            }
        System.out.println();
    }   
}

答案 2 :(得分:0)

您的问题的简单答案是您在c + i >= 11时打印星号。如果您向最里面的if语句添加新条件,则可以在满足该条件时打印星号而不是c * i

只是提示您的代码为单位数字添加空格。您可能需要查看String.format如何执行此操作(在您的情况下,格式&#34;%2d&#34;将自动为您添加空间)。