java控制台打印乘法口诀表

目录

  • 前言
  • 具体代码
  • 完整代码

前言

背乘法口诀表我没记错话,应该是我们在上小学二年级的时候,相信大家对乘法表相当熟悉,那你知道如何用java打印这个漂亮的表吗?下面咱们一起来学习学习。
在这里插入图片描述

具体代码

  1. 数字乘法表
    关键代码:
for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                if (j == 2 && (i == 3 || i == 4)) {
                    System.out.print(j + "×" + i + "=" + (i * j) + "  ");
                    continue;
                }
                System.out.print(j + "×" + i + "=" + (i * j) + " ");
            }
            System.out.println();
        }

分析:

使用两层循环
第一层循环代表行号,取值范围 1-9
第二层循环代表列号,取值范围1-当前行号
为了打印整齐使用 if(j2 && (i3 || i==4)){
在行号为 3和4列号为2是多打印一个空格,其它情况正常打印。

打印效果:
在这里插入图片描述
优化代码

for(int i=1;i<=9;i++){
  for(int j=1;j<=i;j++){
        //格式化字符串,代码更简洁
        String format = String.format(j+"×"+i+"=%2d"+(j==i?"%n":"  "), i*j);
        System.out.print(format);
    }
}

打印效果一样
在这里插入图片描述

2.汉字乘法表
数字转汉字方法

/**
     * 数字(小于100)转汉字
     * @param number
     * @return
     */
    public static String numberToChinese2(int number) {
        String[] chineseNumbers = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九","十"};
        StringBuilder sb = new StringBuilder();
        while (number > 0) {
            int digit = number % 10;
            //去掉零
            if(digit != 0){
                sb.append(chineseNumbers[digit]);
            }
            number /= 10;
            //拼接十
            if(number > 0) {
                sb.append(chineseNumbers[10]);
            }
            //十位是1且个位不是0是去掉1
            if(digit !=0 && number==1){
                break;
            }
        }
        return sb.reverse().toString();
    }

打印汉字乘法表方法

for(int i=1;i<=9;i++){
  for(int j=1;j<=i;j++){
       //格式化字符串,代码更简洁
       String jchanese = numberToChinese2(j);
       String iChanese = numberToChinese2(i);
       int ji = i*j;
       String jiChanese = numberToChinese2(i*j);
       String format = null;
       if(ji <= 9){
           format = String.format("%-6s"+(j==i?"%n%n":""),jchanese+iChanese+"得"+jiChanese);
       }else {
           format = String.format("%-6s"+(j==i?"%n%n":""), jchanese+iChanese+jiChanese);
       }
       System.out.print(format);
   }
}

打印效果
在这里插入图片描述

  1. 倒着打印乘法表
    关键代码
for(int i=1;i<=9;i++){
   for(int n=1;n<=i-1;n++){
      System.out.print(String.format("%-10s"," "));
    }
   for(int j=i;j<=9;j++){
       //格式化字符串,代码更简洁
       String iChanese = numberToChinese2(i);
       String jchanese = numberToChinese2(j);
       int ji = i*j;
       String jiChanese = numberToChinese2(i*j);
       String format = null;
       if(ji <= 9){
           format = String.format("%-8s"+(j==9?"%n%n":""),iChanese+jchanese+"得"+jiChanese);
       }else {
           format = String.format("%-8s"+(j==9?"%n%n":""), iChanese+jchanese+jiChanese);
       }
       System.out.print(format);

   }
}

打印效果:
在这里插入图片描述
倒着的另一种效果

for(int i=1;i<=9;i++){
  for(int j = i;j<=9;j++){
    String iChanese = numberToChinese2(i);
     String jchanese = numberToChinese2(j);
     int ji = i*j;
     String jiChanese = numberToChinese2(i*j);
     String format = null;
     if(ji <= 9){
         format = String.format("%-8s"+(j==9?"%n%n":""),iChanese+jchanese+"得"+jiChanese);
     }else {
         format = String.format("%-8s"+(j==9?"%n%n":""), iChanese+jchanese+jiChanese);
     }
     System.out.print(format);
   }
}

在这里插入图片描述

完整代码

下面是打印乘法口诀表的完整代码

public class MultTable {

    public static void main(String[] args) {
        //typeMultiplicationTable();
        //typeMultiplicationTable2();
        //typeMultiplicationTable3();
        //typeMultiplicationTable4();
        //typeMultiplicationTable5();
        typeMultiplicationTable6();

    }

    /**
     * 打印数字的乘法口诀表
     */
    static void typeMultiplicationTable() {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                if (j == 2 && (i == 3 || i == 4)) {
                    System.out.print(j + "×" + i + "=" + (i * j) + "  ");
                    continue;
                }
                System.out.print(j + "×" + i + "=" + (i * j) + " ");
            }
            System.out.println();
        }
    }

    /**
     * 优化打印数字的乘法口诀表
     */
    static void typeMultiplicationTable2() {
        for(int i=1;i<=9;i++){
            for(int j=1;j<=i;j++){
                //格式化字符串,代码更简洁
                String format = String.format(j+"×"+i+"=%2d"+(j==i?"%n":"  "), i*j);
                System.out.print(format);
            }
        }
    }

    /**
     * 汉字乘法口诀表
     */
    static void typeMultiplicationTable3() {
        for(int i=1;i<=9;i++){
            for(int j=1;j<=i;j++){
                //格式化字符串,代码更简洁
                String jchanese = numberToChinese2(j);
                String iChanese = numberToChinese2(i);
                int ji = i*j;
                String jiChanese = numberToChinese2(i*j);
                String format = null;
                if(ji <= 9){
                    format = String.format("%-6s"+(j==i?"%n%n":""),jchanese+iChanese+"得"+jiChanese);
                }else {
                    format = String.format("%-6s"+(j==i?"%n%n":""), jchanese+iChanese+jiChanese);
                }
                System.out.print(format);
            }
        }
    }

    /**
     * 倒着的汉字乘法口诀表
     */
    static void typeMultiplicationTable4() {
        for(int i=1;i<=9;i++){
            for(int n=1;n<=i-1;n++){
                System.out.print(String.format("%-10s"," "));
            }
            for(int j=i;j<=9;j++){
                //格式化字符串,代码更简洁
                String iChanese = numberToChinese2(i);
                String jchanese = numberToChinese2(j);
                int ji = i*j;
                String jiChanese = numberToChinese2(i*j);
                String format = null;
                if(ji <= 9){
                    format = String.format("%-8s"+(j==9?"%n%n":""),iChanese+jchanese+"得"+jiChanese);
                }else {
                    format = String.format("%-8s"+(j==9?"%n%n":""), iChanese+jchanese+jiChanese);
                }
                System.out.print(format);

            }
        }
    }

    /**
     * 倒着的汉字乘法口诀表2
     */
    static void typeMultiplicationTable5() {
        for(int i=1;i<=9;i++){
            for(int j =1;j<=9;j++){
                String iChanese = numberToChinese2(i);
                String jchanese = numberToChinese2(j);
                int ji = i*j;
                String jiChanese = numberToChinese2(i*j);
                String format = null;
                if(ji <= 9){
                    format = String.format("%-8s"+(j==9?"%n%n":""),iChanese+jchanese+"得"+jiChanese);
                }else {
                    format = String.format("%-8s"+(j==9?"%n%n":""), iChanese+jchanese+jiChanese);
                }
                if(i<=j){
                    System.out.print(format);
                }


            }
        }
    }

    /**
     * 倒着的汉字乘法口诀表2
     */
    static void typeMultiplicationTable6() {
        for(int i=1;i<=9;i++){
            for(int j = i;j<=9;j++){
                String iChanese = numberToChinese2(i);
                String jchanese = numberToChinese2(j);
                int ji = i*j;
                String jiChanese = numberToChinese2(i*j);
                String format = null;
                if(ji <= 9){
                    format = String.format("%-8s"+(j==9?"%n%n":""),iChanese+jchanese+"得"+jiChanese);
                }else {
                    format = String.format("%-8s"+(j==9?"%n%n":""), iChanese+jchanese+jiChanese);
                }

                System.out.print(format);

            }
        }
    }




    /**
     * 数字转汉字
     * @param number
     * @return
     */
    public static String numberToChinese(int number) {
        String[] chineseNumbers = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
        StringBuilder sb = new StringBuilder();
        while (number > 0) {
            int digit = number % 10;
            sb.append(chineseNumbers[digit]);
            number /= 10;
        }
        return sb.reverse().toString();
    }


    /**
     * 数字(小于100)转汉字
     * @param number
     * @return
     */
    public static String numberToChinese2(int number) {
        String[] chineseNumbers = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九","十"};
        StringBuilder sb = new StringBuilder();
        while (number > 0) {
            int digit = number % 10;
            //去掉零
            if(digit != 0){
                sb.append(chineseNumbers[digit]);
            }
            number /= 10;
            //拼接十
            if(number > 0) {
                sb.append(chineseNumbers[10]);
            }
            //十位是1且个位不是0是去掉1
            if(digit !=0 && number==1){
                break;
            }
        }
        return sb.reverse().toString();
    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/900522.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ffmpeg视频滤镜:腐蚀滤镜

滤镜简述 erosion 官网链接> FFmpeg Filters Documentation 这个滤镜会在视频上应用腐蚀操作&#xff0c;腐蚀操作是形态学中一种操作&#xff0c;接触过opencv的同学应该很熟悉。滤镜主要有如下作用&#xff1a; 去除噪声&#xff1a;腐蚀可以帮助去除图像中的小颗粒噪…

大尺寸反射式液晶显示模块行业分析:预计2030年全球市场规模将达到2,020.21百万美元

大尺寸反射式液晶显示模块&#xff08;Large-Size Reflective LCD Module&#xff09;是指采用反射显示技术的液晶显示屏&#xff0c;主要依赖自然光或环境光反射来显示内容&#xff0c;减少了对背光的依赖。这类显示屏常用于户外显示、公共信息系统、可穿戴设备及低能耗电子设…

GANDALF: 基于图的Transformer与数据增强主动学习框架,具有可解释特征的多标签胸部X光分类|文献速递-基于生成模型的数据增强与疾病监测应用

Title 题目 GANDALF: Graph-based transformer and Data Augmentation Active Learning Framework with interpretable features for multi-label chest Xrayclassification GANDALF: 基于图的Transformer与数据增强主动学习框架&#xff0c;具有可解释特征的多标签胸部X光分…

【Unity 安装教程】

Unity 中国官网地址链接 Unity - 实时内容开发平台 | 3D、2D、VR & AR可视化https://unity.cn/首先我们想要安装Unity之前&#xff0c;需要安装Unity Hub&#xff1a; Unity Hub 是 Unity Technologies 开发的一个集成软件&#xff0c;它为使用 Unity 引擎的开发者提供了一…

Linux巡检利器xsos的安装和使用

一、 一般项目基本完成的时候&#xff0c;后期运维工作的重点就是及时的&#xff0c;合理的频率巡检了&#xff0c;巡检的目的主要是及时发现各种各样的问题 那么&#xff0c;自己编写shell脚本是大部分人的第一选择&#xff0c;这里有个比较麻烦的地方&#xff0c;shell脚本…

ctfshow(259->261)--反序列化漏洞--原生类与更多魔术方法

Web259 进入界面&#xff0c;回显如下&#xff1a; highlight_file(__FILE__);$vip unserialize($_GET[vip]); //vip can get flag one key $vip->getFlag();题干里还提示了网站有一个flag.php界面&#xff0c;源代码如下&#xff1a; $xff explode(,, $_SERVER[HTTP_X…

开源限流组件分析(三):golang-time/rate

文章目录 本系列前言提供获取令牌的API数据结构基础方法tokensFromDurationdurationFromTokensadvance 获取令牌方法reverseN其他系列API 令人费解的CancelAt是bug吗 取消后无法唤醒其他请求 本系列 开源限流组件分析&#xff08;一&#xff09;&#xff1a;juju/ratelimit开源…

Apache Paimon Catalog

Paimon Catalog可以持久化元数据&#xff0c;当前支持两种类型的metastore&#xff1a; 文件系统&#xff08;默认&#xff09;&#xff1a;将元数据和表文件存储在文件系统中。hive&#xff1a;在 hive metastore中存储元数据。用户可以直接从 Hive 访问表。 2.2.1 文件系统…

分布式IO模拟量模块:多领域应用的高效能解决方案

分布式IO模拟量模块是分布式IO系统中的重要组件&#xff0c;用于实现现场设备或过程的模拟量信号的采集、监视和控制。该模块通常与现场总线耦合器配合使用&#xff0c;能够接收来自现场设备的模拟量信号&#xff08;如电流、电压等&#xff09;&#xff0c;并将其转换为数字信…

STM32-Cube定时器TIM

一、内部时钟源 1、创建项目 File → New → STM32 project选择STM32F103C8T6单片机&#xff0c;命名TIM 2、配置单片机 1.打开USART1&#xff0c;方便我们与电脑连接查看数据 开启UART1并开启中断。 2、设置时钟源 开启外部高速晶振 将时钟频率设置为72MHz 设置调试模…

利用飞腾派进行OpenCV开发

实验目标&#xff1a; 完成飞腾平台OpenCV开发。 实验大纲&#xff1a; Mat数据结构加载、显示、保存图像读写像素RGB图像分离彩色图转灰度图 Mat数据结构 Mat是一个类&#xff0c;由两个数据部分组成&#xff1a;矩阵头(大小,通道,数据类型等)和数据块(像素 值)。创建示例…

uniapp uview 上传图片,数据以formData + File 形式传输

期望 后端期望前端给的传参为 formData 形式, 同时文件的数据类型为File 形式. 解决过程 将文件处理为 File 格式 uview 中的 upload 组件点击上传之后不是标准的 File 形式,点击上传单个文件之后的控制台信息如下: [{"url": "blob:http://localhost:8081/…

华为云实战杂记

配置nginx服务器 首先我们拿到一台服务器时&#xff0c;并不知道系统是否存在Nginx我们可以在Linux命令行执行如下命令查看 find / -name nginx* find / -name nginx* 查找所有名字以nginx开头的文件或者目录&#xff0c;我们看看系统里面都有哪些文件先&#xff0c;这样可以快…

【Jenkins】解决在Jenkins Agent节点容器内无法访问物理机的docker和docker compose的问题

解决在Jenkins Agent节点容器内无法访问物理机的docker和docker compose的问题 1. 确定物理机docker和docker compose已经安装2. 编写Jenkins Agent结点docker-compose.yaml配置文件3. 修改docker运行时文件权限4. 启动容器并验证 最近接触到一个发布产物是一个 docker镜像的项…

【力扣】GO解决子序列相关问题

文章目录 一、引言二、动态规划方法论深度提炼子序列问题的通用解法模式 三、通用方法论应用示例&#xff1a;最长递增子序列&#xff08;LeetCode题目300&#xff09;Go 语言代码实现 四、最长连续递增序列&#xff08;LeetCode题目674&#xff09;Go 语言代码实现 五、最长重…

EXCELL中如何两条线画入一张图中,标记坐标轴标题?

1&#xff0c;打开excel&#xff0c;左击选中两列&#xff0c; 2&#xff0c;菜单栏>“插入”>”二维折线图”选中一个 3&#xff0c;选中出现的两条线中的一条右击>最下一行&#xff0c;“设置数据系列格式” 4&#xff0c;右测“系列选项中”>点击“次坐标轴” 5…

邮件系统SSL加密传输,保护你的电子邮件免受网络威胁

在互联网的浪潮中&#xff0c;企业数字化转型的步伐不断加快。企业邮箱作为数字化应用的重要组成部分&#xff0c;已成为员工沟通、协同工作和企业管理的关键工具。但是在公共网络安全性普遍较弱的背景下&#xff0c;黑客容易侵入企业网络&#xff0c;监控流量&#xff0c;截获…

私域朋友圈运营

今天必须给大家分享一份超棒的朋友圈运营思维导图 有了它&#xff0c;你可以逐步打造属于自己的精彩朋友圈&#x1f389;。无论是想分享生活点滴&#x1f4a7;&#xff0c;还是展示个人魅力✨&#xff0c;又或者推广自己的业务&#x1f4c8;&#xff0c;这份思维导图都能给你指…

vuetify学习笔记(v-app和v-responsive)

我最近在学习vuetify3&#xff0c;我以前是用element plus和taiwind css。vuetify的一个好处是&#xff0c;它不仅是一个向element plus一样提供好用的组件库&#xff0c;而且还提供了向taiwind css一样的原子类&#xff0c;可以通过类名方便的定义组建的样式。以前element plu…

为什么使用 toFixed 方法的结果不一致呢?

偶遇一个不准确的方法 toFixed() &#xff0c;其是 JS 中用于将数字格式化为指定小数位数的方法&#xff0c;但有时返回的结果不够准确&#xff0c;展示如下&#xff1a; 这通常是由于 JavaScript 对浮点数的处理方式导致的。 1. 浮点数精度问题 JavaScript 中的数字是以 IEE…