首先,我检讨,我的第一周作业还没有完成,即我的github还没有装上,其次,我不准备装了,原因是每次弄他都要好几个小时,然后依然不好使,最后浪费时间浪费精力,还搞得我痛不欲生,于是,我决定,不要让装软件这件事情打扰我学习编程的兴趣,但是我需要把每周的代码量展示出来,怎么办呢?我决定使用360云盘,一是因为链接不会失效,二是用着方便。每个人做事都有三分钟热血,我可不想都浪费在装软件上。下面展示出两个本周代码样例(大部分都在云盘当中)!这些代码都是我自己所编的,没有照任何工具去抄袭。代码发送到(https://yunpan.cn/cq5RNJuFJn5d3 访问密码 9a95)
1)用*打出菱形
package first; public class starone { public static void main(String[] args) { for(int i = -3;i <= 3;i++){ for(int j = 0;j <= Math.abs(i);j++){ System.out.print(" "); } for(int k = 0;k < 2*(3-Math.abs(i))+1;k++){ System.out.print("*"); } System.out.println(); } } }
看了网上所给的标准代码,是使用两个大的for循环,然后分别嵌套两个小的for循环去编程,觉得很麻烦,因为需要进行6次for循环,接着发现了一个规律,即空格数从上到下分别为3,2,1,0,1,2,3,*数从上到下分别为1,3,5,7,5,3,1,于是空格就采用了绝对值函数从-3到3进行计算,*的规律,我发现它符合2*(3-Math.abs(i))+1这个规律,于是就采用了这样的办法去编程,结果也可以正确编译,这种方法省去了3个for循环,减少了代码的行数,以最短的代码实现功能。
2)因式分解
package first; import java.util.Scanner; public class yinshu { public static void main(String[] args) { Scanner c = new Scanner(System.in); int a = c.nextInt(); int b = a; for(int i = 2;i <= a/2;){ if(b%i==0){ System.out.print(i+" "); b = b/i; continue; } i++; } } }
首先,网上的答案给的较为麻烦,一是代码行数较多,二是需要一个循环两个判断分别进行,这里使用了一个for循环,一个continue语句,并且将i++写入循环内部,即如果if满足,跳出循环,不执行i++语句,重新除这个数字,这样可以保证因式分解时不会漏除数字。这种方法代码较少,判断也较少,所以比较简单。
还有一些虽然编完了,但是自我感觉需要完善和加强,就未上传!代码行数:600行.
最后,github我将会继续重装,如果未来的某一天我装上了,将改用github发布!