学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
发新话题
打印

编写一个实现质因数分解(如12=2*2*3)的类

编写一个实现质因数分解(如12=2*2*3)的类

package chap03;
import java.util.Vector;
import java.lang.Integer;
/**
7.类的设计:
编写一个实现质因数分解(如12=2*2*3)的类,必需的要求和建议如下:
① 类中至少有表示被分解的数的成员变量;
② 类中至少有表示分解结果(一批数)的成员变量;
③ 类中至少有一个构造方法,在构造的过程中完成分解;
④ 类中至少有一个更改数据的方法,在更改的过程中也完成分解;
⑤ 类中要有一个将对象转换成串(也就是将分解结果转换成串)的方法(toString()),但要求该方法在数没有变化的时候使用上次生成的串而不是低效率地每次都产生一个新的串;
⑥ 其他的成员变量或方法自己依据具体情况进行安排;
*/
public class Pg0307_01{
    public int num=8;  //
    public Vector result=new Vector();  //
    public String stringResult=null;  //

    public Pg0307_01(int n)
    {
        setNum(n);

    }
    public void setNum(int n)
    {
        result.clear();
        stringResult=null;
        num=n;
        //分解num???
        int i, k;
        k=num;
        for (i=2; i<=k; )
        {
            if (k%i!=0)
            {
                ++i;
                continue;
            }
            //i是因子
            Integer m=new Integer(i);
            result.add(m);
            k/=i;
        }

    }
    public String toString() //转换成串
    {
        if (stringResult==null) //没转换
        {
            int i;
            stringResult="";
            for (i=0; i<result.size(); ++i)//转换
            {
                stringResult+=result.get(i)+(i<result.size()-1?"*":""); //效率低:缓冲串
            }

        }
        return stringResult;
}

    这是主程序,下面是测试程序,但我写的不好,请求大家帮我修改下:package chap03;

public class text {
      public static void main(String[] args) {
          Pg0307_01 p1=new Pg0307_01(8);
          String s;
          p1.setNum(26);
         s=p1.toString();
         System.out.println(s);
         {
            
         }
   
      }
}
我自己运行发现结果显示的是p1.setNum(26);的分解,而没有Pg0307_01 p1=new Pg0307_01(8);的分解,现在我想把Pg0307_01 p1=new Pg0307_01(8);里面的8分解了,程序应该怎么改呢?

TOP

回复 1# 的帖子

public class text {
      public static void main(String[] args) {
          Pg0307_01 p1=new Pg0307_01(8);
          String s;
          p1.setNum(26);//删掉这行就好了,自动调用构造函数
         s=p1.toString();
         System.out.println(s);
         {
            
         }
   
      }
世上事有难易乎?为之?则难者亦易矣;不为,则易者亦难矣

TOP

回复 2# 的帖子

thank you

TOP

发新话题