首页 > 编程语言 >Java代码实现“杨辉三角“

Java代码实现“杨辉三角“

时间:2024-12-14 23:31:52浏览次数:8  
标签:rows Java 数字 int 代码 杨辉三角 triangle Scanner

 杨辉三角简介

杨辉三角(Pascal's Triangle)是一个经典的数学结构,其特点是每一行的数字是其上方两个数字之和。具体来说:

 顶部的数字是1。

 每一行的开头和结尾的数字也是1。

 其他位置的数字是其左上方和右上方数字之和。

例如,前几行的杨辉三角如下:

    1

   1 1

  1 2 1

 1 3 3 1

1 4 6 4 1

```

 Java实现

下面是使用Java语言实现杨辉三角的代码:

`java
import java.util.Scanner;

public class YangHuiTriangle {
    public static void main(String[] args) {
        // 创建Scanner对象用于接收用户输入
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入杨辉三角的行数: ");
        int numRows = scanner.nextInt();
        scanner.close();

        // 调用方法生成并打印杨辉三角
        generateYangHuiTriangle(numRows);
    }

    /**
     * 生成并打印杨辉三角
     *
     * @param rows 要生成的杨辉三角的行数
     */
    public static void generateYangHuiTriangle(int rows) {
        // 创建一个二维数组来存储杨辉三角的数值
        int[][] triangle = new int[rows][rows];

        for (int i = 0; i < rows; i++) {
            // 每一行的第一个数字设为1
            triangle[i][0] = 1;
            // 每一行的最后一个数字设为1
            triangle[i][i] = 1;

            // 填充中间的数字
            for (int j = 1; j < i; j++) {
                // 当前数字等于上一行的左右两个数字之和
                triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
            }
        }

        // 打印杨辉三角
        printTriangle(triangle, rows);
    }

    /**
     * 打印杨辉三角
     *
     * @param triangle 存储杨辉三角数值的二维数组
     * @param rows     杨辉三角的行数
     */
    public static void printTriangle(int[][] triangle, int rows) {
        // 计算杨辉三角的最大宽度,以便格式化输出
        int maxWidth = String.valueOf(triangle[rows - 1][rows / 2]).length() + 2;

        for (int i = 0; i < rows; i++) {
            // 打印前导空格,使杨辉三角居中
            for (int k = 0; k < rows - i; k++) {
                System.out.print(" ");
            }

            for (int j = 0; j <= i; j++) {
                // 打印每个数字,并根据最大宽度格式化
                System.out.printf("%" + maxWidth + "d", triangle[i][j]);
            }
            System.out.println(); // 换行
        }
    }
}

代码讲解

1. 导入必要的类

 import java.util.Scanner;

2. 主方法 (main)

public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);
       System.out.print("请输入杨辉三角的行数: ");
       int numRows = scanner.nextInt();
       scanner.close();

       generateYangHuiTriangle(numRows);
   }

 创建一个Scanner对象来接收用户输入。

 提示用户输入杨辉三角的行数,并读取输入。

 调用generateYangHuiTriangle方法生成并打印杨辉三角。

3. 生成杨辉三角 (generateYangHuiTriangle)

 public static void generateYangHuiTriangle(int rows) {
       int[][] triangle = new int[rows][rows];

       for (int i = 0; i < rows; i++) {
           triangle[i][0] = 1;
           triangle[i][i] = 1;

           for (int j = 1; j < i; j++) {
               triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
           }
       }

       printTriangle(triangle, rows);
   }
   

 创建一个二维数组triangle来存储杨辉三角的数值。数组的大小为rows x rows,因为杨辉三角的第i行有i+1个数字。

    外层循环遍历每一行:

    将每行的第一个和最后一个数字设为1。

    内层循环填充中间的数字,计算方法为上一行的左右两个数字之和。

    调用printTriangle方法打印生成的杨辉三角。

4. 打印杨辉三角 (printTriangle)

public static void printTriangle(int[][] triangle, int rows) {
       int maxWidth = String.valueOf(triangle[rows - 1][rows / 2]).length() + 2;

       for (int i = 0; i < rows; i++) {
           for (int k = 0; k < rows - i; k++) {
               System.out.print(" ");
           }

           for (int j = 0; j <= i; j++) {
               System.out.printf("%" + maxWidth + "d", triangle[i][j]);
           }
           System.out.println();
       }
   }

 计算杨辉三角中数字的最大宽度,以便格式化输出,使其居中对齐

    外层循环遍历每一行:

    打印前导空格,使杨辉三角居中。

    内层循环打印当前行的数字,使用printf格式化输出。

    每打印完一行后换行。

总结

通过上述代码,我们实现了生成和打印杨辉三角的功能。关键步骤包括:

1. 使用二维数组存储杨辉三角的数值。
2. 遍历每一行,填充每个位置的数值。
3. 格式化输出杨辉三角,使其居中对齐。

 

 

 

标签:rows,Java,数字,int,代码,杨辉三角,triangle,Scanner
From: https://blog.csdn.net/lxsxjsj/article/details/144478492

相关文章

  • java 开闭原则(ocp)详解刨析和示例
    part01开闭原则(Open/ClosedPrinciple,OCP)是面向对象编程中的一个重要设计原则,属于SOLID原则之一。它的核心思想是“软件实体(类、模块、函数等)应该对扩展开放,对修改关闭”。这意味着在软件需求变化时,我们应该能够通过扩展现有代码而不是修改现有代码来实现功能的变化。###原则的......
  • burp(2)利用java安装burpsuite
    BurpSuite安装burpsuite2024.10专业版,已经内置java环境,可以直接使用,支持WindowslinuxmacOS!!!内置jre环境,无需安装java即可使用!!!bp2024.10下载地址:https://pan.baidu.com/s/1E2aVKnnfTWl2SL-ztR_JtQ?pwd=m5pv激活1.首先点击Start.bat2.进入,点击Copy3.点击CN_Burp......
  • Python 编程中的优秀代码框架与设计模式
    Python编程中的优秀代码框架与设计模式Python是一种高级编程语言,因其简洁、易读的语法和强大的库支持而广受开发者欢迎。在开发过程中,选择合适的代码框架和遵循良好的设计模式可以大大提高项目的可维护性、扩展性和效率。本文将介绍一些常用的Python代码框架以及推荐的......
  • 使用idea创建一个JAVA WEB项目
    文章目录1.javaweb项目简介2.创建2.1idea新建项目2.2选择,命名2.3打开2.4选择tomcat运行2.5结果3.总结1.javaweb项目简介JavaWeb项目是一种基于Java技术的Web应用程序,主要用于开发动态网页和Web服务。这种项目能够构建在Java技术栈之上,支持开发人员利用Java......
  • 2024最强Java面试八股文(精简、纯手打)
    2024最新最全国内大厂Java面试高频题库本小册内容涵盖:Java基础,JVM,多线程,数据库(MySQL/Redis)SSM,Dubbo,网络,MQ,Zookeeper,Netty,微服务,大数据,算法,项目,设计模式等,篇幅足足近2千页,大家面试前拿去提前刷刷,一、基础篇1.接口和抽象类的区别相似点:(1)接口和抽象类都不能被实例化(2)实......
  • 2025年最新完整java面试题(含答案)
    1**、面向对象的特征有哪些方面****【基础】**答:面向对象的特征主要有以下几个方面:1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一......
  • java agent 介绍
    javaagent系列javaagent介绍javaagent-02-JavaInstrumentationAPIjavaagent-03-JavaInstrumentation结合bytekit实战笔记agentattachjavaagent-03-JavaInstrumentation结合bytekit实战笔记agentpremainjava-javaagent解释在Java中,-javaagent是一种Ja......
  • 【代码复现】Face X-ray for More General Face Forgery Detection
    前言:这篇文章记录了本人复现FaceX-ray代码的过程以及参考的代码。由于这篇文章是笔者在完成复现完编写的,可能会有一些bug或者问题遗漏。在实现过程中,在关键点检测和混合人脸的过程推荐使用3.6版本的python环境。一、关键点检测原文参考的关键点检测模型是Jointcascadefac......
  • Java IO模型
    JavaIO模型  一、什么是IO? I/O(Input/Output)即输入/输出。 1. 从计算机结构的角度来解读I/O 根据冯.诺依曼结构,计算机结构分为5大部分:运算器、控制器、存储器、输入设备、输出设备。如下图:  从计算机结构的视角来看的话,I/O描述了计算机系统与外部设备之......
  • 解构Go项目结构:别再乱放代码了!
    今天就捋一捋,如何组织一个优雅的GoWeb项目。├──cmd/#项目入口目录│└──main.go#主程序入口├──internal/#私有代码目录│├──handler/#HTTP处理器(等同于Controller)││└──user......