黑马程序员技术交流社区

标题: 这也许就是新手和中级程序员的差距吧 [打印本页]

作者: 愤怒的大飞机    时间: 2017-1-11 23:38
标题: 这也许就是新手和中级程序员的差距吧
同样是写了一个需求的代码,自己写的好复杂
需求:题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
我自己写的
[Java] 纯文本查看 复制代码
package test4;

import java.util.ArrayList;
import java.util.Scanner;

public class Test {
/*
* 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。自己偷懒,就没写是质素就直接返回质素的情况
* */
        static int num = 0;
        public static void main(String[] args) {
                System.out.println("请输入一个整数:");
                num = new Scanner(System.in).nextInt();
                ArrayList<Integer> list = new ArrayList<Integer>();
                chuNum(list,num);
                System.out.println(list);
                StringBuffer s = new StringBuffer();
                for (int i = 0; i < list.size(); i++) {
                        if (i == list.size() - 1) {
                                s = s.append(list.get(i));
                                break;
                        }
                        s= s.append(list.get(i)+" * ");
                }
                System.out.println(num+" = "+s);
        }
        private static void chuNum(ArrayList<Integer> list, int num2) {
                for (int i = 2; i < num2/2+1; i++) {
                        if (num % i == 0) {
                                num = num / i;
                                list.add(i);       

                                chuNum(list, num);
                        }
                }
        }

}
------------简略版-----------------

[Java] 纯文本查看 复制代码
public class Demo{
        public static void main(String[] args){
                int n = 15;
                decompose(n);
        }
        private static void decompose(int n){
                System.out.print(n+"=");
                for(int i=2;i<n+1;i++){
                        while(n%i==0 && n!=i){
                                n/=i;
                                System.out.print(i+"*");
                        }
                        if(n==i){
                                System.out.println(i);
                                break;
                        }
                }
        }
}


作者: wqq1317    时间: 2017-1-11 23:42
都是积累下的,相信有一天你也可以

作者: 愤怒的大飞机    时间: 2017-1-11 23:42
wqq1317 发表于 2017-1-11 23:42
都是积累下的,相信有一天你也可以

好的,谢谢
作者: HXF    时间: 2017-1-12 17:38
区别好大,看着一串英文,我很怀疑去学的时候能不能学上{:8_525:}
作者: 愤怒的大飞机    时间: 2017-1-12 18:03
HXF 发表于 2017-1-12 17:38
区别好大,看着一串英文,我很怀疑去学的时候能不能学上

恩,是差距好大,人家用if  while就解决了, 我还用了StringBuffer ,ArrayList,这内存消耗相对就大了很多




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2