Java-九九乘法表

54 阅读7分钟

***这是我的第一个java程序代码。 pulic class定义一个公开的类,任何地方都能访问这个类,就好像公共厕所和家庭厕所的区别。public class 后面跟的是类名,公共厕所名,MultiplicationTable 乘法表“{}”这个一对一对的大括号就是门框和围墙,先一个大括号把整个厕所都包起来,然后再用大括号把里面的每个隔间给包起来。

public static void 这里面public 就是公开的,static"静态的,不用创建对象就能用"这就是枯燥的书读不下去的原因,本来 不懂一个概念,结果作者解释这个用读者根本不可能懂的其他两个概念解释这个概念,现在更是云里雾里了,放弃就是从这里开始的,还好现在有chatgpt. 代码其实就是创造解决问题的新方法,就像造汽车,不需要重新去造轮子,很多现成的配件可以直接组装形成新的东西,static 就是用告诉电脑我要用现有的轮子来造汽车咯。void 又是啥,是不返回值的服务,好嘛,又不懂了,打个比方就是你让服务员去开空调,他直接就去开了,不需要回来告诉你一声“空调已经开启”,那这就是void 服务,不返回值(“空调已经开启”)的服务,那我这里直接去掉void, 设置需要返回值是不是也是对的?no no no ,这个是主程序main,读代码的小机器人JVM不干,他必须要找一个入口才能进去开始读取代码,而public static void mian(String[] args) 这一长串 就是JVM(java虚拟机)识别的“入口” ,也不知道这个入口为什么要这么长不知道每次打都很累的嘛。main 就简单了,就是程序的启动按钮,要是程序里面没有这个无法启动运行,直接报错。 (String args[]) 又是什么呢,收集参数的地方,比如我的这个程序叫做乘法表,这次做的是九九乘法表,万一下次那个变态又让我做三三乘法表六六乘法表怎么办,这个一坨就是接收变态需求的地方,变态要三三乘法表,直接输入3就可以,六六就直接输入6,不用辛苦大佬我在程序里面改来改去。(String args[]) 也可以写做(String[] args),这里又出现了小括号“()”,小括号和大括号什么区别呢?小括号是包裹参数的,跟在方法的后面,比如sayHello() 这里包裹参数,只不过里面没有参数,println("你好!")也是方法,只不过这个方法是程序自己早就定义好的,也就是造好的轮子,方法名后面加()就是调用方法,如果不加括号就写一个sayHello 不是调用方法。大括号包裹的是代码块比如附方法条件语句和类。

For 就是开始重复做某件事的关键字 for (int i=1; i<=9;i++)int i=1 就是开始做某件事的初始条件设置,这里规定从从整数1开始,i<=9,就是条件,满足这个条件就重复做这个事情,i++ 就是做完这个重复的事情后要做的事情,一般是计数的作用,这里每执行一次就加1,其实就是数总共执行了多少次。容易混淆的来了,虽然这里是 For 加上小括号,但是他并不是方法,他中间还有个空格呢,括号里面也不是参数for (起点;条件;每次变化)这是固定的语法结构,我的天,又多了一个要记忆的东西,后面的{}里面的就是按照规定需要重复执行的代码。

for (int i=1,i<=9;i++){ 这里大括号为什么要换行?看得我头晕眼花,结果不换行 for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.print(j + "×" + i + "=" + (i * j) + "\t"); } System.out.println(); } 头更晕了,原来换行加缩进是为了看起来不那么头晕(虽然看起来还是复杂),我觉得大括号去掉,直接用缩进看得更清楚,我去!这就是python 的写法!python就是全靠缩进写的代码,替代了大括号,所以说java 这里不用大括号,循环的程序就不知道到哪里结束,python 直接用缩进表示,缩进了就表示在这个循环里面,没缩进就表示循环结束。 for i in range(3): print("循环中") print("循环外") 那这里的冒号什么作用,我认为是python设计者的双重保险设计,防止有些人手滑打了缩进,python 规定只有冒号加缩进才能进入代码块,而且有了冒号,还可以写成一行for i in range(3):print("循环中"),更漂亮了。其实只用缩进可以的,比如YAML Cobra Wisp HAML,gpt说的,我完全不知道这些是什么。

for 这里有个空格,是为了区别于方法吗?(int i=1;i<=9;i++) 这里又有一个空格有必要吗,打空格也很累的,gpt说了可以不加,但是为了随大流,还是加把{ //外层控制1-0 For (int j=1;j<=i(打<=多累);j++) {//内层控制列 System.out.print(i+"x"+j+"="+(ij));这里的小括号就是表达式括号的作用,意思是优先计算括号里面的内容,一个小括号玩出花了。又来一个分号;干嘛用,好把原来是表示命令的结束,{}只是区分代码块的意思,也不知道为什么要这么设计,哦,For (int i=1;i<=9;i++) 这里的分号却只是分隔符的意思,没有gpt真的会学懵逼,难怪需要老师了,java 开始的时候没设计好规则,后面也没有去完善修改这些规则,我们这些学习的人很痛苦的,还是python 友好。 * } System.out.println() //每行结束换行 为什么打印要这么多的字,不能一个print 直接完事,骂骂咧咧的学,gpt说这样设计也是有好处的,System 是一个大类,out 是对象,代表把结果输出到黑屏幕就是终端,这个参数改一改可以把结果输出到比如打印机,文件,GUI 界面等,println 是out对象的一个方法,全称为“print line” 打印一行内容,之后换行。

}好的,吐槽完这段代码了,让我来自己写一下,看能不能写出来

这是我写的... public class Multi_9_9{//乘法表英文怎么写来着,multitable?乘 英文怎么说 static void main(String args[]){ for (int i=1;i<=9;i++){//控制行 for (int j=1;j<=i;j++){//控制列 System.out.prinln(i+"×"+"j"+"="+(j*i)); } System.out.println;//一行结束了就换行 }//这里要来一个分号吗?不确定 }

错误1: printlnu是一个方法,调用必须加() 错误2: 结尾少写了一个大括号 错误3: prinln 少了一个t 错误4:main方法必须是public 错误5:分号是拿来结束语句的,不是拿来结束代码块的 错误6: 乘法表是multiplic 倍增的 +ation 表示“动作 过程 结果”乘法的过程就是multiplication,比如operation, communication 都是这样变成名称的 错误改好了,打印出来是这样的, ̄□ ̄||

image.png

System.out.println(i+"×"+"j"+"="+(ji));这里打错了,这里输出一个表达是就换行了,应该改成System.out.print(i+"×"+"j"+"="+(ji)+" ") 怎么回事,第四行,明显有点歪,呀,j 这个变量写成了字符 image.png System.out.print(i+"×"+j+"="+(j*i)+" "); 还是没有对齐

image.png gpt说加个"\t"就能对齐,\t 不就是多加几个空格吗? 怎么对齐。 \t是跳到下个制表位(对齐位置)的意思,一般每隔8个字符是一个制表位,99=81 是6个字符,21=2是5个字符,所以加了\t 以后他会自动补足剩下的3个字符,然后再开始下一个表达式,这样就对齐了。

System.out.print(i+"×"+j+"="+(j*i)+" "+"\t");整齐了,那如果字符串长度超过8个字符,不就不能对齐了?

image.png 1919乘法表,从第十行就没对齐了,如果制表位是8个字符长度,第十行应该还是和第九行对齐的呀,101=10才十个字符他怎么就13字符开始写起了?

image.png