典型静态方法的实现(algs4)

                                                       StaticMethod数据类型的API

public           class     StaticMethod                                                                                                       

                   

public  static i nt            abs(int x)                                           计算一个整数的绝对值

public  static  double    abs(double x)                                   计算一个浮点数的绝对值

public  static  boolean  isPrime(int x)                                    判读一个数是否是素数

public  static  double    sqrt(double n)                                   计算平方根(牛顿迭代法)

public  static  double    hypotenuse(double a,double b)    计算直角三角形的斜边                               

public  static  double    H(int n)                                                计算调和级数1+1/2+1/3+1/4+...+1/n


计算平方根(牛顿迭代法) 配图



package method;
/* 典型的静态方法的实现
 静态方法:若类的方法前加了static关键字,则该方法称为静态方法,反之为实例方法。
 静态方法为类所有,可以通过对象来使用,也可以通过类来使用。
 静态方法只能调用静态变量。
 实例方法必须通过类的实例来使用。实例方法可以使用类的非静态成员,也可以使用类的静态成员。*/
public class StaticMethod
{	/*计算一个整数的绝对值*/
	
	public static int abs(int x)
	{
		if (x>0) return x;
		else return -x;
	}
	/*计算一个浮点数的绝对值*/
	public static double abs(double x)
	{
		if(x>0.0) return x;
		else return -x;
	}
	/*判读一个数是否是素数
	素数:在大于一的自然数中,除了一和它本身外不再有其他因数*/
	public static boolean isPrime(int x)
	{
		if(x<2) return false;
		for(int i=2;i*i<=x;i++)      /* i=2*/
			if(x%i==0)
				return false;
		return true;
	}
	/*计算平方根(牛顿迭代法)
	 令函数f(x)=x*x-n,则使得f(x)=0的x值即为n的平方根
	 图像上即为抛物线f(x)与x轴正半轴交点
	 先假定Xn(初试赋值为n)为该交点,得到抛物线上一点(Xn,f(Xn))
	 过(Xn,f(Xn))的切线交x轴于Xm,切线k=(Xn*Xn-n)/(Xn-Xm),抛物线f(n)'=2*Xn
	 斜率相等的Xm=(Xn+n/Xn)/2,Xm比Xn更为逼近
	 不断迭代,直至满足精确度
	 */
	public static double sqrt(double n)
    {
        if (n<0) return Double.NaN;		/*Not a Number*/
        double err = 1e-15;		/*1e-15:一乘以十的负十五次方*/
        double x = n;
        while (Math.abs(x*x - n) > err)
            x = (n/x + x)/2.0;
        return x;
    }
	/*计算直角三角形的斜边*/
	public static double hypotenuse(double a,double b)
	{
		return Math.sqrt(a*a+b*b);
	}
	/*计算调和级数
	 1+1/2+1/3+1/4+...+1/n=?*/
	public static double H(int n)
	{
		double sum=0.0;
		for(int i=1;i<=n;i++)
			sum+=1.0/i;          /*必须是1.0*/
		return sum;
	}
	
}

package method;

import java.util.Scanner;

/*典型的静态方法的实现-测试用例*/
public class TestMethod
{
	public static void main(String[] args)
	{
		int x;
		double a;
		double b;
		
		Scanner sc=new Scanner(System.in);
		
		System.out.println("计算一个整数的绝对值,请输入一个整数:");
		x=sc.nextInt();
		System.out.println("绝对值:"+StaticMethod.abs(x));
		
		System.out.println("计算一个浮点数的绝对值,请输入一个浮点数:");
		a=sc.nextDouble();
		System.out.println("绝对值:"+StaticMethod.abs(a));
		
		System.out.println("判读一个数是否是素数,请输入一个整数:");
		x=sc.nextInt();
		System.out.println(StaticMethod.isPrime(x));
		
		System.out.println("计算平方根(牛顿迭代法),请输入一个整数:");
		x=sc.nextInt();
		System.out.println("平方根:"+StaticMethod.sqrt(x));
		
		System.out.println("计算三角形的斜边,请输入两个浮点数:");
		a=sc.nextDouble();
		b=sc.nextDouble();
		System.out.printf("斜边:%.5f\n",StaticMethod.hypotenuse(a, b));
		
		System.out.println("计算调和级数 1+1/2+1/3+1/4+...+1/n,请输入一个整数:");
		x=sc.nextInt();
		System.out.printf("调和级数:%.5f\n",StaticMethod.H(x));
		sc.close();
		
	}
}







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值