<Java>利用for循环在控制台输出99乘法表的探索
2018-02-02 00:57
423 查看
利用for循环在控制台输出99乘法表,效果如下所示。
面对这个问题,第一个想法是:有两组循环,a和b,分别从1递增到9,相乘,打印。
有了想法,就要写出来,发现问题再解决问题。于是…
结果是可以预见的。
问题来了,①有很多重复的,比如:1*2=2 与 2*1=2,都会被打印出来,显然这是我们不想要的。②排版问题,乘法表不是一条道直接走下来的,是呈阶梯型,所以还应加以合适的换行,同时为了美观应该在每一个算式中间加入制表符。
问题②比较好解决,修改两个地方:
结果:
现在新的问题出现了,但是也是一个小问题,第一列并不是按照 1*X=Y 的顺序来的,这个好改,在sysout的地方a、b互换位置就行,重点是问题①,大概就是如图形容:
红线上方的内容不需要。
通过观察总结发现红线上方的表现形式是前一个数大于后一个数,所以只需在for里加一个if判断跳出循环就能做到不打印红线上方的内容。改良之后结果如下:
结果如下:
这个结果看似和文首部分给出的题目很吻合,但是细心的朋友已经发现在文首给出的截图中乘积结果的输出是带有宽度的。
看到这里,我首先想到的并不是加空格,因为明显在程序运行的时候让他自己判断输出的是一位数还是两位数,根据情况加空格显然太复杂,我想到了格式化输出,没错就是给字符串添加宽度。这图中的情况应该是设置宽度为2,经过 查阅资料 。
修改后的代码如下:
结果如下:
确实很好的复现了文首图中的结果,满分没毛病~~~
面对这个问题,第一个想法是:有两组循环,a和b,分别从1递增到9,相乘,打印。
有了想法,就要写出来,发现问题再解决问题。于是…
public class boke { public static void main(String[] args) { // TODO 自动生成的方法存根 for(int a=1;a<10;a++) { for(int b=1;b<10;b++) { System.out.println(a+"*"+b+"="+a*b); } } } }
结果是可以预见的。
1*1=1 1*2=2 1*3=3 ..... 9*7=63 9*8=72 9*9=81
问题来了,①有很多重复的,比如:1*2=2 与 2*1=2,都会被打印出来,显然这是我们不想要的。②排版问题,乘法表不是一条道直接走下来的,是呈阶梯型,所以还应加以合适的换行,同时为了美观应该在每一个算式中间加入制表符。
问题②比较好解决,修改两个地方:
public class boke { public static void main(String[] args) { // TODO 自动生成的方法存根 for(int a=1;a<10;a++) { for(int b=1;b<10;b++) { System.out.print(a+"*"+b+"="+a*b+"\t"); //这里将println换成print,同时添加一个制表符 } System.out.println(); //添加换行 } } }
结果:
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
现在新的问题出现了,但是也是一个小问题,第一列并不是按照 1*X=Y 的顺序来的,这个好改,在sysout的地方a、b互换位置就行,重点是问题①,大概就是如图形容:
红线上方的内容不需要。
通过观察总结发现红线上方的表现形式是前一个数大于后一个数,所以只需在for里加一个if判断跳出循环就能做到不打印红线上方的内容。改良之后结果如下:
public class boke { public static void main(String[] args) { // TODO 自动生成的方法存根 for(int a=1;a<10;a++) { for(int b=1;b<10;b++) { if(b>a) break; //添加判断跳出,中断打印 System.out.print(b+"*"+a+"="+a*b+"\t"); //这里将println换成print,同时添加一个制表符 } System.out.println(); //添加换行 } } }
结果如下:
1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
这个结果看似和文首部分给出的题目很吻合,但是细心的朋友已经发现在文首给出的截图中乘积结果的输出是带有宽度的。
看到这里,我首先想到的并不是加空格,因为明显在程序运行的时候让他自己判断输出的是一位数还是两位数,根据情况加空格显然太复杂,我想到了格式化输出,没错就是给字符串添加宽度。这图中的情况应该是设置宽度为2,经过 查阅资料 。
修改后的代码如下:
public class boke { public static void main(String[] args) { // TODO 自动生成的方法存根 for(int a=1;a<10;a++) { for(int b=1;b<10;b++) { if(b>a) break; //添加判断跳出,中断打印 // System.out.print(b+"*"+a+"="+a*b+"\t"); //这里将println换成print,同时添加一个制表符 System.out.print(b+"*"+a+"="); System.out.printf("%2d",a*b); //使用printf格式化输出,控制宽度为2 System.out.print("\t"); } System.out.println(); //添加换行 } } }
结果如下:
1*1= 1 1*2= 2 2*2= 4 1*3= 3 2*3= 6 3*3= 9 1*4= 4 2*4= 8 3*4=12 4*4=16 1*5= 5 2*5=10 3*5=15 4*5=20 5*5=25 1*6= 6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7= 7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8= 8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9= 9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
确实很好的复现了文首图中的结果,满分没毛病~~~
相关文章推荐
- Unity 实现Log实时输出到屏幕或控制台上<一>
- Java利用循环输出乘法表
- 用Response对象的write方法和<%%>及<%=%>输出同样效果的乘法表格
- 利用命令行编译Java文件时出现“需要<>标识符”的错误
- Java_21_22_for循环_【最后执行迭代】_练习_奇数偶数_打印1-1000/5的整数_1-10的阶乘_99乘法表
- <Calendar>java时间加减法和格式化输出
- Log(C/C++和Java)->写到Log设备文件 LogCat->读取Log设备文件(LogCat默认输出控制台)
- java基础<IO输出与输入>--->字符编码
- java如何输出数组里的字符串到控制台,需要借助for循环
- C#控制台基础 list<int>添加元素并输出实例
- java利用list<Map>的value进行排序
- 利用CUDA的矩阵乘法1 <利用 Kahan's Summation Formula 来提高CUDA 的浮点数运算精确度>
- struts2利用<s:fielderror/>等标签详细地控制错误消息输出格式
- 黑马程序员--JAVA用for循环实球99乘法表
- Struts2 中利用 <s:iterator标签 批量输出 <input type="checkbox">判读是否被选中
- 初学java:输出99乘法口诀
- struts2利用<s:fielderror/>等标签详细地控制错误消息输出格式
- Java中<list,set,map>的遍历与增强for循环
- Java脚本 <%%> html注释中加入java的输出脚本