我是一个刚刚接触JAVA的小白,对它比较感兴趣,就花了两天时间看看书,所以非常希望和他人交流,更好的去理解它。

首先说说对作业的理解:

页面上有什么(what):

对象:空格、星号和换行符;

对象在什么时候出现和结束(where):根据行和列确定

怎样来实现对象的定位(how):

1、遍历每一行----从而找到行

2、遍历每一列----从而找到列

在不同列根据对象出现的位置,来确定输出什么对象

如果要看答案的话其实直接看answer1、answer2、answer3、answer4、answer5这几个方法就行了,主要是理解注释和思考模式,因为每个人都有自己的想法,我把想法分享给大家,希望大家多评论,这样大家都会有启发,共同进步嘛!代码可以复制到自己的IDE里面编译运行。

  1 /**
  2  * 这里是文档注释
  3  */
  4 package task;
  5
  6 import java.util.Scanner;
  7
  8 /**
  9  * @author AsceticJ
 10  * @date 2017年3月3日 下午7:48:29
 11  * @version 1.1
 12
 13  * @TODO Description
 14  */
 15 public class Day001
 16 {
 17     public static void myTest(Test a,int n)
 18     {
 19         a.answer1(n);
 20         System.out.println("--------我是华丽的分割线--------");
 21         a.answer2(n);
 22         System.out.println("--------我是华丽的分割线--------");
 23         a.answer3(n);
 24         System.out.println("--------我是华丽的分割线--------");
 25         a.answer4(n);
 26         System.out.println("--------我是华丽的分割线--------");
 27     }
 28     public static void main(String[] args)
 29     {
 30         Scanner scan = new Scanner(System.in);//用户输入值
 31         int n  = scan.nextInt();//获取用户输入的整型数
 32         Test quetion = new Test();
 33         TestOther queOther = new TestOther();
 34         myTest(quetion, n);
 35         myTest(queOther, n);
 36         quetion.answer5();
 37         scan.close();
 38         System.out.println("这是我的答案和解题思想,欢迎大家和我一起交流学习。");
 39     }
 40 }
 41 class Test{
 42 //    question 1
 43     public void answer1(int n){
 44         for (int i = 0; i < n; i++)//换行符插入:一共有n行,每行末尾插入换行符
 45         {
 46             for (int j = 0; j <= i; j++)//*插入的:第i行有i列,每行开始就插入,第i列结束
 47             {
 48                 System.out.print("*");
 49             }
 50             System.out.println("");//一行结束,输出换行
 51         }
 52     }
 53 //    question 2
 54     public void answer2(int n){
 55             //    1、当参数表示行号
 56             if(n<2){
 57             System.out.println("你是要一颗星的三角形吗? 喏~ 给你:*");
 58             return;
 59             }
 60             for (int i = 1; i <= n; i++)
 61             {
 62                 for (int j = 1; j <= 2*n-1; j++)//最多有2n-1列,第i行有2i-1列
 63                 {
 64                     if(j<=n-i){//计算空格前面空格数,(2n-1-(2i-1))除以2---即总列数减*数除2
 65                         System.out.print(" ");//空格插入:从每行开始插入,到n-i结束
 66                     }else if(j < n+i){//计算*结束位置,n-i+(2i-1)----即前面空格数加上*数
 67                         System.out.printf("*");
 68                     }
 69                 }
 70                 System.out.println("");//一行结束,输出换行
 71             }
 72
 73 //        2、当参数表示最后一行星的个数        里面的计算方法一样故不做注释了
 74 //            if (1==n%2&&1!=n)
 75 //            {
 76 //                for (int i = 1; i <= (n+1)/2; i++)
 77 //                {
 78 //                    for (int j = 1; j <= n; j++)
 79 //                    {
 80 //                        if (j<=(n+1-2*i)/2)
 81 //                        {
 82 //                            System.out.print(" ");
 83 //                        }else if(j<=(n-1+2*i)/2){
 84 //                            System.out.print("*");
 85 //                        }
 86 //                    }
 87 //                    System.out.println("");
 88 //                }
 89 //            }else {
 90 //                System.out.println("您输入的数字不能构成等腰三角形哟^_^");
 91 //            }
 92         }
 93 //    question 3
 94     public void answer3(int n){
 95 //        1、当参数表示行号
 96                 if(n<2){
 97                 System.out.println("你是要一颗星的三角形吗? 喏~ 给你:*");
 98                 return;
 99                 }
100                 for (int i = n; i > 0 ; i--)
101                 {
102                     for (int j = 1; j <= 2*n-1; j++)
103                     {
104                         if(j<=n-i){
105                             System.out.print(" ");
106                         }else if(j < n+i){
107                             System.out.printf("*");
108                         }
109                     }
110                     System.out.println("");
111                 }
112 //        2、同answer2类似  就不编写了
113     }
114 //    question 4
115     public void answer4(int n){
116         //这里的n指的是总行数的一半
117         //方式1    这样存在一个问题,中间存在两行底边    你可以将前面的代码修改少输出一行就是了,然后拼接  我就不拼了
118         answer2(n);
119         answer3(n);
120         System.out.println("------------------------------------------");
121         //方式2
122         if(n<3||0==n%2){
123             System.out.println("泥揍开,你丫的根本不是想要菱形!");
124             return;
125             }
126 //        下面继续    原理一样
127             for (int i = 1; i <= n; i++)
128             {
129                 if(i<=(n+1)/2){
130                     for (int j = 1; j <= n; j++)
131                     {
132                         if(j<=(n+1-2*i)/2){
133                             System.out.print(" ");
134                         }else if(j < (n+2*i+1)/2){
135                             System.out.printf("*");
136                         }
137                     }
138                 }else {
139                     for (int j = 1; j <= n; j++)
140                     {
141                         if(j<=(2*i-n-1)/2){
142                             System.out.print(" ");
143                         }else if(j <= (3*n-2*i+1)/2){
144                             System.out.printf("*");
145                         }
146                     }
147                 }
148                 System.out.println("");
149             }
150     }
151 //    question 5        同样是行列操作的问题
152     public void answer5(){
153         for(int i = 1; i <=9; i++) {
154             for (int j = 1; j <=i; j++) {
155                 if (i<5&&3==j)
156                 {
157                     System.out.print(" "+j+"*"+i+"="+i*j+"  "); //为了解决前面数值均为个位数占位没对齐的问题
158                 }else {
159                     System.out.print(j+"*"+i+"="+i*j+"  ");
160                 }
161             }
162             System.out.println("");
163         }
164     }
165
166 }
167
168 //鉴于有人说之前的和要求不符,便写了新的     其实后面将*和空格连在一起就是了    里面我就懒得注释了
169 class TestOther extends Test
170 {
171     public void answer1(int n){
172         for (int i = 0; i <= n; i++)
173         {
174             for (int j = 0; j < i; j++)
175             {
176                 System.out.print("* ");
177             }
178             System.out.println("");
179         }
180     }
181
182     public void answer2(int n){
183         if(n<2){
184             System.out.println("你是要一颗星的三角形吗? 喏~ 给你:*");
185             return;
186             }
187         for (int i = 1; i <= n; i++)
188         {
189             for (int j = 1; j <= 2*n-1; j++)
190             {
191                 if(j<=n-i){
192                     System.out.print(" ");
193                 }else if(j <= n){
194                     System.out.printf("* ");
195                 }
196             }
197             System.out.println("");
198         }
199     }
200
201     public void answer3(int n){
202         if(n<2){
203             System.out.println("你是要一颗星的三角形吗? 喏~ 给你:*");
204             return;
205             }
206         for (int i = n; i >0; i--)
207         {
208             for (int j = 1; j <= 2*n-1; j++)
209             {
210                 if(j<=n-i){
211                     System.out.print(" ");
212                 }else if(j <= n){
213                     System.out.printf("* ");
214                 }
215             }
216             System.out.println("");
217         }
218     }
219
220     public void answer4(int n){
221         if(n<3||0==n%2){
222             System.out.println("泥揍开,你丫的根本不是想要菱形!");
223             return;
224             }
225             for (int i = 1; i <= n; i++)
226             {
227                 if(i<=(n+1)/2){
228                     for (int j = 1; j <= n; j++)
229                     {
230                         if(j<=(n+1-2*i)/2){
231                             System.out.print(" ");
232                         }else if(j <= (n+1)/2){
233                             System.out.printf("* ");
234                         }
235                     }
236                 }else {
237                     for (int j = 1; j <= n; j++)
238                     {
239                         if(j<=(2*i-n-1)/2){
240                             System.out.print(" ");
241                         }else if(j <= (n+1)/2){
242                             System.out.printf("* ");
243                         }
244                     }
245                 }
246                 System.out.println("");
247             }
248     }
249
250 }

转载于:https://www.cnblogs.com/ascetic-xj/p/6498883.html

Java基本控制流程的理解之输出三角形和乘法表相关推荐

  1. JAVA学习脚印3: java语言控制流程

    JAVA学习脚印3: java语言控制流程 本节首先介绍,java语言中的字符串处理以及输入输出控制,最后介绍控制流程. 在讲述控制流程之前,先介绍以下java中字符串和输入输出的内容,以便后续练习编 ...

  2. Java SE 控制流程(今天本君不早朝)

    Java的控制流程结构与C和C++的控制流程结构一样,只有很少的例外. 具体参考<<java核心技术 卷一>> 第三章 3.8 控制流程 (p63) 或者自己多写写代码,参考报 ...

  3. C语言试题八十三之输出左下三角形九九乘法表

    1.题目 输出左下三角形九九乘法表 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试中C程序设计科目.帮助C语言学者打好程序基础.C语言基础,锻炼您的逻辑思维和解决问题的能 ...

  4. javascript实现输出打印九九乘法表、水仙花数、

    javascript输出打印九九乘法表 for(var i = 1;i<=9;i++){ for(var j = 1;j<=i;j++){document.write(j + '*' + ...

  5. Java基础-控制流程-5. 中断控制流程语句

    为什么80%的码农都做不了架构师?>>>    Java设计者在语言中增加了一条带标签的break,以此来支持这种程序设计风格. 下面先来看看不带标签的break语句.与用于退出sw ...

  6. 用c#输出正九九乘法表_利用C#怎么输出九九乘法表

    利用C#怎么输出九九乘法表 发布时间:2020-12-15 14:26:04 来源:亿速云 阅读:66 作者:Leah 今天就跟大家聊聊有关利用C#怎么输出九九乘法表,可能很多人都不太了解,为了让大家 ...

  7. java 不用if_Java 不用for不用if写出九九乘法表算法

    Java 不用for不用if写出九九乘法表算法代码如下: public class ss { public static void main(String[] args) { row(); } sta ...

  8. java报告(一)编程打印一个三角形的乘法口诀表

    编程打印一个三角形的乘法口诀表(注意对齐),并练习对程序进行单步运行.断点调试等. 实验要求: 1. 在实验报告中给出程序运行结果截图. 2. 源程序代码附到实验报告的最后. 3. 认真填写实验报告并 ...

  9. 小西的快乐乘法表(想不到怎么做到同时输入两个数,并同时输出两张乘法表,求助)

    我只能写出输出一个乘法表的代码,在下面 9月10号!新生小西高兴的走到广西大学,看到了正门的十二根柱子,突然想开始背诵乘法表! 不过小西已经是大学生了!所以想背任意前A行乘法表! Input 输入多行 ...

最新文章

  1. 三级网络技术刷题笔记
  2. 刚开始学python,写的几个小脚本
  3. qgc地面站如何导入离线地图_QGC地面站工具下载 QGroundControl(QGC地面站软件) v2018.11.02 免费安装版 下载-脚本之家...
  4. 解决com.alibaba.fastjson.JSONException: autoType is not support
  5. JDBC——基于Mysql的基本操作
  6. 读卡距离和信号强度两方面来考虑
  7. 使用React Router v4的嵌套路由
  8. TCA9548A iic地址扩展器件 树莓派JAVA版教程
  9. centos apache 腾讯云ssl证书配置
  10. 游戏玩家都不爱 Windows 11?网友:没必要,Windows 10 足矣
  11. mysql通用mapper_通用Mapper(Mybatis)
  12. verlay虚拟化技术_FPGA虚拟化:突破次元壁的技术
  13. 在Java中为JFrame添加背景音乐
  14. chrome如何对部分网页截图
  15. 【Excel VBA】银行卡信用卡卡号校验功能函数
  16. python PyQt5程序运行界面无响应
  17. 【STM32】NVIC 中断优先级管理,抢占优先级,响应优先级,中断寄存器
  18. checkboxlist控件用法
  19. Python——验证码输入
  20. React-Antd-表单-必选样式

热门文章

  1. 客户资料搜索软件_手机自动拨号软件APP外呼系统 电脑拨号电话营销神器 CRM客户管理系统...
  2. 做一个网站真的有那么难吗?
  3. 开涛的博客—公众号:kaitao-1234567,一如既往的干货分享
  4. AVP的商业化之路还有多远?
  5. EB-Boost :智慧景区共享单车中长期投放量精准预测方法
  6. SSS1629USB麦克风方案设计原理
  7. 基于Matlab的电磁场与波“电磁波的入射、反射、透射”仿真—(可实现波形入射反射过程的仿真)
  8. Python 将矩形图片转为圆形图片
  9. cocos2d-x 从win32到android移植的全套解决方案
  10. 台大林轩田机器学习基石学习笔记(一):The Learning Problem