常数变易法举例_常数变易法怎么想出来的

常数变易法举例_常数变易法怎么想出来的1.4常数变易法常数变异的思考方法当程序中有许多因素都在变动的时候,我们可以假设其中的某些变数为常数,把他们写成固定的死值。将来再用变量替换。星号金字塔常数变异典型应用 打印这个金字塔:             *            **           ***           ****          **

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

1.4常数变易法

常数变异的思考方法

当程序中有许多因素都在变动的时候,我们可以假设其中的某些变数为常数,把他们写成固定的死值。

将来再用变量替换。

星号金字塔

常数变异典型应用

 

打印这个金字塔:

              *

              * *

             * * *

            * * * *

           * * * * *

正常的思路:两层嵌套循环。

/*
           *
          * *
         * * *
        * * * *
       * * * * *
*/
package ConstantChange;
 
public class PrintPyramid {
    public static void main(String[] args) {
       /*System.out.println("          *");
       System.out.println("        * *");
       System.out.println("       * * *");
//     System.out.println("     * * * *");
//     System.out.println("     * * * * *");
      
       for(int i=0;i<17;i++){
           System.out.print(" ");
       }
       for(int i=0;i<4;i++){
           System.out.print("* ");
       }
       System.out.println();
      
       for(int i=0;i<16;i++){
           System.out.print(" ");
       }
       for(int i=0;i<5;i++){
           System.out.print("* ");
       }
       System.out.println();*/
      
       //尝试写双层循环,代替上述的这种写5次的三行循环。
       //k  0  1  2  3  4   【k】
       //? 20 19 18 17 16 【20-k】
       //?? 1  2  3  4  5   【k+1】
       for(int k=0;k<5;k++){
           for(int i=0;i<20-k;i++){
              System.out.print(" ");
           }
           for(int i=0;i<k+1;i++){
              System.out.print("* ");
           }
           System.out.println();
       }
    }
}

Jetbrains全家桶1年46,售后保障稳定

                    *
                   * *
                  * * *
                 * * * *
                * * * * *


字母金字塔

 

        A

       ABA

      ABCBA

     ABCDCBA

    ABCDEDCBA

/*
        A
       ABA
      ABCBA
     ABCDCBA
    ABCDEDCBA
   
*/
package ConstantChange;
 
public class LetterPyramid {
    public static void main(String[] args) {
/*//       "     ABCDCBA"
       for(int i=0;i<5;i++){
           System.out.print(" ");
       }
       for(int i=0;i<4;i++){
//         System.out.print('A');//常数变异法,这里本应是变动的,先用常数代替
           System.out.print((char)('A'+i));//输出ABCDE,强制转换ASCII码
       }
       for(int i=3-1;i>=0;i--){
           System.out.print((char)('A'+i));
       }
       System.out.println();
//     "    ABCDEDCBA"
       for(int i=0;i<4;i++){
           System.out.print(" ");
       }
       for(int i=0;i<5;i++){
//         System.out.print('A');//常数变异法,这里本应是变动的,先用常数代替
           System.out.print((char)('A'+i));//输出ABCDE,强制转换ASCII码
       }
       for(int i=4-1;i>=0;i--){
           System.out.print((char)('A'+i));
       }
       System.out.println();*/
      
       //k   
       //?    9-k
       //??   k
       //???  k-2
        for(int k=1;k<5;k++){
           for(int i=0;i<9-k;i++){
              System.out.print(" ");
           }
           for(int i=0;i<k;i++){
              System.out.print((char)('A'+i));//输出ABCDE,强制转换ASCII码
           }
           for(int i=k-2;i>=0;i--){
              System.out.print((char)('A'+i));
           }
           System.out.println();
       }
      
    }
}
        A
       ABA
      ABCBA
     ABCDCBA


当变成逐渐熟练之后,常数变异法可能是我们最常用的方法。

打印图形X

 

试打印出如下图形:

 

 $$         $$

 $$        $$

  $$      $$

   $$    $$   

     $$ $$    

      $$$$   

       $$      

      $$$$   

     $$ $$     

   $$    $$  

  $$      $$ 

 $$        $$

 $$         $$

 

 

注意规模可以调整

/*
 * 打印图形
 
试打印出如下图形:
 
 $$          $$
  $$        $$
   $$      $$
    $$    $$   
     $$  $$    
      $$$$   
       $$      
      $$$$   
     $$  $$    
    $$    $$  
   $$      $$ 
  $$        $$
 $$          $$
 
 
注意规模可以调整
*/
package ConstantChange;
 
public class PrintX {
    public static void main(String[] args) {
       /*//" $$          $$ "
       for(int i=0;i<1;i++) System.out.print(" ");
       for(int i=0;i<2;i++) System.out.print("$");
       for(int i=0;i<10;i++) System.out.print(" ");
       for(int i=0;i<2;i++) System.out.print("$");
       for(int i=0;i<1;i++) System.out.print(" ");
       System.out.println();
       //"  $$        $$  "
       for(int i=0;i<2;i++) System.out.print(" ");
       for(int i=0;i<2;i++) System.out.print("$");
       for(int i=0;i<8;i++) System.out.print(" ");
       for(int i=0;i<2;i++) System.out.print("$");
       for(int i=0;i<2;i++) System.out.print(" ");
       System.out.println();*/
      
      
       int LINE = 13;//由于图形的对称性,输入偶数行时,做出的图形+1行
       int n = LINE/2;
      
       for(int k=0;k<n;k++){
           for(int i=0;i<k+1;i++) System.out.print(" ");
           System.out.print("$$");
           for(int i=0;i<LINE-3-2*k;i++) System.out.print(" ");
           System.out.print("$$");
           for(int i=0;i<k+1;i++) System.out.print(" ");
           System.out.println();
       }
      
       for(int i=0;i<n+1;i++) System.out.print(" ");
       System.out.print("$$");
       for(int i=0;i<n+1;i++) System.out.print(" ");
       System.out.println();
      
       for(int k=n-1;k>=0;k--){
           for(int i=0;i<k+1;i++) System.out.print(" ");
           System.out.print("$$");
           for(int i=0;i<LINE-3-2*k;i++) System.out.print(" ");
           System.out.print("$$");
           for(int i=0;i<k+1;i++) System.out.print(" ");
           System.out.println();
       }
    }
}
 $$          $$
  $$        $$ 
   $$      $$  
    $$    $$    
     $$  $$    
      $$$$     
       $$      
      $$$$     
     $$  $$    
    $$    $$   
   $$      $$  
  $$        $$ 
 $$          $$

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219601.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JavaScript 中根据换行符拆分字符串失败

    JavaScript 中根据换行符拆分字符串失败问题:在使用JavaScript拆分字符串时,使用分隔符\n无效。方法:应使用转义字符处理反斜杠,即使用分隔符\\n。

    2022年5月23日
    129
  • Java基础语法(八)与条件控制语句再续前缘之switch语句

    Java基础语法(八)与条件控制语句再续前缘之switch语句

    2021年5月17日
    191
  • 怎么修改HTML网页的名字_如何修改html文件内容

    怎么修改HTML网页的名字_如何修改html文件内容NetCms默认设置中,只能上传Doc文件,不能上传xls文件和PPT文件。 上传文件类型可以“控制面板–>参数设置–>上传文件允许格式”中设置。但是,仅能上传,添加新闻时,添加附件的文件选择框中无法看到xls文件和ppt文件。 通过查看源文件,添加新闻页面是~/Manage/News/News_add.aspx文件,在该文件中,添加附件位置,通过调用JavaScript的s

    2022年9月29日
    2
  • java实现线程通信的几种方式[通俗易懂]

    java实现线程通信的几种方式[通俗易懂]前言在多线程的世界里,线程与线程之间的交互无处不在,只不过在平时的开发过程中,大多数情况下,我们都在单线程的模式下进行编码,即使有,也直接借助框架自身的机制实现了,其实线程之间的通信在JDK中是一个比较深的问题,比如大家熟知的消息中间件的实现,从某种角度上讲,就借助了多线程通信的思想,下面总结了JDK中常用的几种实现线程通信的方式,提供参考1、synchronized实现方式可能很多小伙伴们会有疑问,synchronized是对共享资源加锁使用的,怎么和线程通信扯在一起呢?这里纠正一个小小的偏见,也是

    2022年6月19日
    42
  • 网站管理后台帐号密码暴力激活成功教程方法

    网站管理后台帐号密码暴力激活成功教程方法【导读】对于网站运行的个人站长而言,最担心的是应如何有效且安全的去管理自己的网站,否则自己辛辛苦苦经营的网站就会被不请自来的不速之客给攻破,轻则站点数据被窃取,重则整个网站都被攻陷,导致无法恢复。本文主要从管理后台这个方面来讲解其黑客攻击过程,并通过在虚拟环境中展开实例演示,各读者可以跟着本教程去做实验,通过实验加强对攻击过程的了解,如果你是一名菜鸟站长也可以针对性的去做一下防护方案。…

    2022年10月13日
    2
  • 什么是NoSQL,为什么要使用NoSQL?

    什么是NoSQL,为什么要使用NoSQL?1 为什么用 NoSQL 1 1 单机 MySQL 的美好时代在 90 年代 一个网站的访问量一般都不大 用单个数据库完全可以轻松应付 在那个时候 更多的都是静态网页 动态交互类型的网站不多 上述架构下 我们来看看数据存储的瓶颈是什么 DAL DataAccessLa 数据访问层 Hibernate MyBatis 数据量的总大小一个机器放不下时 数据

    2025年7月24日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号