编程

首先,我检讨,我的第一周作业还没有完成,即我的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发布!

原文地址:https://www.cnblogs.com/guoyouming/p/5374565.html