【问题标题】:how to print this pattern in java i have no idea how如何在java中打印这个模式我不知道如何
【发布时间】:2019-06-23 17:45:11
【问题描述】:

我无法打印此图案:

1 2 3 4 *

1 0 0 * 5

1 0 * 0 5

1 * 0 0 5

* 2 3 4 5

我试图打印,但只在行上:

公共类模式{

public static void main(String[] args) { 
        for(int j=1;j<=5;j++)
        {
            if(j>4) {
                System.out.print("*");
            }
            else {
                System.out.print(j);

            }
        }
    }
}

【问题讨论】:

  • 这不是“设计模式”,您应该只使用java 标记。接下来,您能否准确说明您要打印的图案的逻辑? (i) 第 N 行第 5-N+1 列的星号 (ii) 除第一行和最后一行之外的所有其他列为零 (iii) 除第一行和最后一行的星号之外的所有数字?

标签: java algorithm loops for-loop


【解决方案1】:

让我们试着考虑一下这个输出的逻辑:

你有一个 NxN 矩阵,行和列编号为 1..N。

  • 如果您在次对角线上(即行+列=N+1),请打印*
  • 否则,如果您在边界上(即,行或列是 1 或 N),请打印列号
  • 否则,打印0

现在,您只需将此逻辑转换为 Java:

int size = 5;

for (int i = 1; i <= size; ++i) {
    for (int j = 1; j <= size; ++j) {
        char ch;
        if (i + j == size + 1) {
            ch = '*';
        } else if (i == 1 || i == size || j == 1 || j == size) {
            ch = (char) ('0' + j);
        } else {
            ch = '0';
        }
        System.out.print(ch + " ");
    }
    System.out.println();
}

【讨论】:

  • 这是一个很好的答案,我可能无法告诉你,但你应该考虑到这看起来很像某种 IT 学生的练习,让他们发现基础知识(几年前我自己也经历过)而你只是把答案放在盘子里。我不确定这是否比对他的帖子发表评论更有帮助,这些评论是您在代码之前发布的内容。 :/ 我的意思是:指导如何解决问题,而不是直接给出答案。 (即使你都给了,前者就足够了)
猜你喜欢
  • 2022-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-16
  • 1970-01-01
  • 1970-01-01
  • 2021-11-30
相关资源
最近更新 更多