帕斯卡三角形二维数组 - 格式化打印输出

2024-06-23

我有一个小作业,必须使用二维数组来生成帕斯卡三角形。这是我的代码,它有效。如果我像这样显示三角形,就会有额外的机会:

Pascal's triangle
(source: daugerresearch.com https://daugerresearch.com/vault/PascalsTriangle.gif)

但是,我的间距不是这样格式化的。它只是显示所有在左侧排列的数字。它很难描述,但如果你运行它,你就会明白我的意思。

这是我的代码:

public class Pascal {
    public static final int ROW = 16;
    public static void main(String[] args) {
        int[][] pascal = new int[ROW + 1][];
        pascal[1] = new int[1 + 2];
        pascal[1][1] = 1;
        for (int i = 2; i <= ROW; i++) {
            pascal[i] = new int[i + 2];
            for (int j = 1; j < pascal[i].length - 1; j++) {
                pascal[i][j] = pascal[i - 1][j - 1] + pascal[i - 1][j];
            }
        }
        for (int i = 1; i <= ROW; i++) {
            for (int j = 1; j < pascal[i].length - 1; j++) {
                System.out.print(pascal[i][j] + " ");
            }
            System.out.println();
        }
    }
}

如果有人可以帮助我弄清楚如何向我的程序添加正确的间距以产生图片中所需的输出,那就太好了。我知道我需要放一个System.out.print(" ")某处。我只是不知道在哪里。


在这里,我修改了您的代码,由于我的控制台窗口的限制,它在 ROW 大小到 13 之前都能完美打印:

import java.util.*;

public class Pascal {
    public static final int ROW = 12;
    private static int max = 0;

    public static void main(String[] args) {
        int[][] pascal = new int[ROW + 1][];
        pascal[1] = new int[1 + 2];
        pascal[1][1] = 1;
        for (int i = 2; i <= ROW; i++) {
            pascal[i] = new int[i + 2];
            for (int j = 1; j < pascal[i].length - 1; j++) {
                pascal[i][j] = pascal[i - 1][j - 1] + pascal[i - 1][j];
                String str = Integer.toString(pascal[i][j]);
                int len = str.length();
                if (len > max)
                    max = len;
            }
        }

        for (int i = 1; i <= ROW; i++) {
            for (int k = ROW; k > i; k--)
                System.out.format("%-" + max + "s", " ");
            for (int j = 1; j < pascal[i].length - 1; j++)
                System.out.format("%-" + (max + max) + "s", pascal[i][j]);
            System.out.println();
        }
    }
}

Output:

                                 1     
                              1     1     
                           1     2     1     
                        1     3     3     1     
                     1     4     6     4     1     
                  1     5     10    10    5     1     
               1     6     15    20    15    6     1     
            1     7     21    35    35    21    7     1     
         1     8     28    56    70    56    28    8     1     
      1     9     36    84    126   126   84    36    9     1     
   1     10    45    120   210   252   210   120   45    10    1     
1     11    55    165   330   462   462   330   165   55    11    1     
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

帕斯卡三角形二维数组 - 格式化打印输出 的相关文章

随机推荐

  • Python tqdm import检查jupyter笔记本或实验室是否正在运行

    我有一个模块 tqdm 我需要根据是否运行我的模块以不同的方式导入它 ipynb在 jupyter 笔记本或 jupyter 实验室环境中 有没有办法可以在 python 中确定这一点 例如 if
  • 使用单表继承更改 Rails 中 ActiveRecord 类的类型

    我有两种类型的课程 BaseUser lt ActiveRecord Base and User lt BaseUser 它使用 Authlogic 的身份验证系统来 acts as authentic 这种继承是使用单表继承来实现的 如果
  • 使用 Python 的 Popen 替换 Bash 风格的进程

    在 Bash 中 您可以轻松地将进程的输出重定向到临时文件描述符 并且所有这些都由 bash 自动处理 如下所示 mydaemon config file lt echo autostart True n daemonize True 或者
  • 尝试删除时 SQL 异常错误 #547 和外键约束违规

    我正在查看一些代码 我没有编写它 来测试我们的代码在尝试删除存在依赖项的表行时是否捕获两个错误条件 该代码最初查找消息中的特定文本 而不是使用错误号 为了提供多语言支持 最好根据错误号而不是错误消息来捕获异常 在测试中 代码正在查找两组文本
  • 变量在事实之前发生了变化,您能解释一下 Chrome V8 的这种行为吗?

    我正在编写一个 javascript 程序并在 Chrome 7 中运行它 当时我遇到了一些奇怪的行为 现在 在我的代码中 随着所有其他事情的发生 我花了一些时间才弄清楚那不是我 我已经提取了下面代码的精华
  • 列名不明确错误

    我在从 2 个表中选择命令时遇到问题 所以我有表1 table1 id int pk table1 name table1 surname table1 age table1 address table1 city 和表2 table2 i
  • SVG 模式在 Safari 中不起作用

    我正在尝试使用 SVG 制作类似网格的图案 我看到非常奇怪的行为
  • :before 带有属性选择器

    我有以下 html 表单 div p Field1 p div
  • 启动 CSS 动画 JavaScript

    如何用js启动CSS动画 第一行 webkitAnimation 有效 但其他行无效 anim logo style webkitAnimation threesixty 3s anim logo style mozAnimation th
  • 使用 pySpark 在 Azure Databricks 中使用来自 EventHub 的事件

    我可以看到 Spark 连接器和使用 Azure Databricks 中的 Scala 从事件中心消费事件的指南 但是 我们如何使用 pySpark 从 azure databricks 消费事件中心中的事件 任何建议 文档详细信息都会有
  • 如何在 C++ 中终止或停止分离线程?

    我对终止 停止 杀死 C 中的分离线程感兴趣 如何才能做到这一点 void myThread int loop 0 while true std this thread sleep for std chrono seconds 5 loop
  • 带有特殊/unicode 字符的 toLowerCase 会引发异常

    如我错了请纠正我 If str有一个字符 例如 然后运行 str toLowerCase Locale English 抛出空指针异常 这就是我所看到的行为 那么这是怎么回事呢 这是怎么回事 未指定 toLowerCase 抛出空指针异常
  • jqgrid 一列的自定义编辑行为

    我想要一个 jqGrid 对于某一列 不是将单元格变成文本框 而是弹出一个需要填写的表单 关闭表单后 输入的数据将保存到单元格中 用户永远无法直接与单元交互 以免损坏数据 看图片 我有我想要与之交互的用户表 某处也恰好有一张书桌 当用户单击
  • 在铯地形图上导航,破坏图形的位置

    我在我的 gwt 项目中使用 cesium 并且使用 cesium terrain server 来处理地形 不是 cesium gwt 用 jsni 开发我自己的代码 我的问题 我正在地形 多边形 折线 上创建图形 当我在地图上导航时 图
  • Oozie 工作流程:未找到 Hive 表,但它确实存在

    我有一个 oozie 工作流程 在 4 台机器的 CDH4 集群上运行 一台主控机 三台 哑 工作机 hive 元存储使用 mysql 在 master 上运行 存在驱动程序 oozie 服务器也使用 mysql 在 master 上运行
  • 对 property_get 的未定义引用

    我的目标是进行微调以找到适当的线程优先级 我关注的线程位于 hardware my company codec openmax il 下 我修改了2个文件 Android mk 在 LOCAL C INCLUDES 列表中添加 TOP sy
  • 何时使用 Apollo 缓存重定向?

    阿波罗文档讨论使用cacheRedirects https www apollographql com docs react advanced caching html cacheRedirect告诉 Apollo 如何从其他查询访问缓存中
  • 不同类型的二维数组

    我想创建一个二维数组 在其中存储数据库中的记录 所以我们可以说第一个是类型int和第二个类型String 这里我只描述一条记录 所以基本上是数据库列的类型 我该怎么做 数组是正确的数据结构吗 我不确定我是否关注 但您可能正在寻找Map
  • 如何使用 youtube-dl 批量创建 youtube 下载器 gui

    这就是我目前所处的位置 cls echo off title youtube downloader downloader echo youtuber downloader pause cls echo please put the link
  • 帕斯卡三角形二维数组 - 格式化打印输出

    我有一个小作业 必须使用二维数组来生成帕斯卡三角形 这是我的代码 它有效 如果我像这样显示三角形 就会有额外的机会 source daugerresearch com https daugerresearch com vault Pasca