java控制台打印乘法口诀表

news2024/10/25 21:08:49

目录

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

前言

背乘法口诀表我没记错话,应该是我们在上小学二年级的时候,相信大家对乘法表相当熟悉,那你知道如何用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();
    }

}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

shell编程实例1—猜数字游戏

脚本生成一个100以内的随机数&#xff0c;提示用户猜数字&#xff0c;根据用户的输入&#xff0c;提示用户猜对了&#xff0c; 猜小了或猜大了&#xff0c;直至用户才对数字结束 #!/bin/bash #脚本生成一个100以内的随机数&#xff0c;提示用户猜数字&#xff0c;根据用户的输…

大模型生图安全疫苗注入——进阶解决方案与系统优化(DataWhale组队学习)

引言 大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;上篇博客中&#xff0c;我们基于DataWhale 2024年10月大模型生图安全疫苗注入赛道的任务&#xff0c;介绍了攻击与防御的基本策略&#xff0c;如通过上下文稀释法、隐喻替换等绕过检测机制&#xff0c;并提出了多…

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

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

利用飞腾派进行OpenCV开发

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

Chat-macOS:HuggingChat 开源 MACOS 原生 AI 聊天神器,让你的 Mac 变成智能助手!

❤️ 如果你也关注大模型与 AI 的发展现状&#xff0c;且对大模型应用开发非常感兴趣&#xff0c;我会快速跟你分享最新的感兴趣的 AI 应用和热点信息&#xff0c;也会不定期分享自己的想法和开源实例&#xff0c;欢迎关注我哦&#xff01; &#x1f966; 微信公众号&#xff…

毕业设计—基于 Inception-ResNet模型的皮肤癌分类系统实现

1.摘要 皮肤癌是人类最常见的恶性肿瘤&#xff0c;主要通过视觉诊断进行初步临床筛查。但是由于皮肤病变外观的细微变化性&#xff0c;使用图像自动分类皮肤病变是一项具有挑战性的任务。本文为了提高深度学习算法在皮肤病检测上的准确率&#xff0c;本文提出了基于Inception和…

bootstrap模态框myModalLabel遇到做复制的功能失效解决方案整理

bootstrap模态框myModalLabel遇到做复制的功能失效解决方案整理 解决办法&#xff1a;标红色的去掉就可以 tabindex“-1”

SOLIDWORKS专业版企业购买多少钱一套?

SOLIDWORKS正版软件分为三个版本&#xff0c;主要以每个版本的功能不同对价格进行划分&#xff0c;SOLIDWWORKS代理商硕迪科技将为企业提供优惠的采购价格&#xff0c;欢迎通过电话或者在线咨询联系我们&#xff0c;洽谈价格和服务。 ▲ SOLIDWORKS Professional 是应用最为广…

网站建设中需要注意哪些安全问题?----雷池社区版

服务器与应用安全指南 1. 服务器安全 1.1 操作系统安全 及时更新补丁&#xff1a;确保操作系统始终安装最新补丁&#xff0c;以防范系统漏洞。例如&#xff0c;Windows Server 定期推送安全更新&#xff0c;修复如远程代码执行等潜在威胁。优化系统服务配置&#xff1a;关闭不…

什么是3D展厅?有哪些应用场景?

3D展厅是一种利用三维技术构建的虚拟展示空间。它借助虚拟现实&#xff08;VR&#xff09;、增强现实&#xff08;AR&#xff09;等现代科技手段&#xff0c;将真实的展示空间数字化&#xff0c;呈现出逼真、立体、沉浸的展示效果。视创云展通过整合虚拟展厅、数字人互动、音视…

【真题笔记】09-12年系统架构设计师要点总结

【真题笔记】09-12年系统架构设计师要点总结 41 视图DSSA&#xff08;特定领域架构&#xff09;集成系统数据库管理设计模式操作符运算符综合布线备份数据库集成工作流技术软件质量保证需求管理需求开发结构化方法企业战略数据模型事务数据库主题数据库系统设计原型开发静态分析…

组件通信八种方式(vue3)

一、父传子&#xff08;props&#xff09; 关于Props的相关内容可以参考&#xff1a;Props-CSDN博客 父组件通过 props 向子组件传递数据。适合简单的单向数据流。 <!-- Parent.vue --> <template><Child :message"parentMessage" /> </temp…

useEffect简单介绍

react组件生命周期 比如说&#xff0c;某些操作就只在初始渲染后执行&#xff0c;我们就可以使用useEffect。 useEffect(function () {fetch(http://www.omdbapi.com/?apikey${KEY}&sinterstellar).then((res) > res.json()).then((data) > setMovies(data.Search)…

[C#][winform]基于yolov5的驾驶员抽烟打电话安全带检测系统C#源码+onnx模型+评估指标曲线+精美GUI界面

【重要说明】 该系统以opencvsharp作图像处理,onnxruntime做推理引擎&#xff0c;使用CPU进行推理&#xff0c;适合有显卡或者没有显卡windows x64系统均可&#xff0c;不支持macOS和Linux系统&#xff0c;不支持x86的windows操作系统。由于采用CPU推理&#xff0c;要比GPU慢。…

传统数据仓库升级版:云数据仓库!

随着公司业务拓展&#xff0c;数据爆炸性增长&#xff0c;数据驱动的见解已成为决策过程中关键指标。对公司来说&#xff0c;怎么选择存储所有这些信息的简单方法并运行必要的数据分析以获得有用的见解变得更加重要。 在过去的50多年里&#xff0c;传统的本地数据仓库一直是一…

ffmpeg视频滤镜:腐蚀滤镜

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

构建后端为etcd的CoreDNS的容器集群(六)、编写自动维护域名记录的代码脚本

本文为系列测试文章&#xff0c;拟基于自签名证书认证的etcd容器来构建coredns域名解析系统。 一、前置文章 构建后端为etcd的CoreDNS的容器集群&#xff08;一&#xff09;、生成自签名证书 构建后端为etcd的CoreDNS的容器集群&#xff08;二&#xff09;、下载最新的etcd容…

pytorch训练和使用resnet

pytorch训练和使用resnet 使用 CIFAR-10数据集 训练 resnet resnet-train.py import torch import torchvision import torchvision.transforms as transforms import torch.nn as nn import torch.optim as optim# 在CIFAR-10数据集中 # 训练集&#xff1a;包含50000张图像…

城市极客,存内先锋-存内社区主理人招募令

在这个数据驱动的时代&#xff0c;存内计算正成为推动技术革新的核心力量。 我们&#xff0c;存内计算社区&#xff0c;正站在这场革命的前沿&#xff0c;现在&#xff0c;我们正式发出召集令&#xff0c;寻找那些渴望引领技术浪潮的城市站主理人&#xff01; 地点&#xff1a…

使用LangChain进行LLM应用开发(1)——了解LangChain

【课程链接】https://www.ai360labs.com/playground/course/66813572135124992/detail 【适用人群】 入门学习Langchain的同学轻体验ChatOpenAI的同学&#xff0c;平台提供Api-key&#xff0c;应该是很小的token额度&#xff0c;仅供练习 LangChain是一个开源框架&#xff0c…