1.方法重载

(1)源代码

// MethodOverload.java

// Using overloaded methods

public class MethodOverload {

public static void main(String[] args) {

System.out.println("The square of integer 7 is " + square(7));

System.out.println("\nThe square of double 7.5 is " + square(7.5));

}

public static int square(int x) {

return x * x;

}

public static double square(double y) {

return y * y;

}

}

(2)程序截图:

(3)分析结果,有什么特殊之处吗

这个程序展示了方法的重载,方法的名字相同,但是参数不一样,而且这两个方法都可以调用,互不影响,只是结果不一样。

满足重载的条件:

(1)方法名相同;

(2)参数类型不同,参数个数不同,或者是参数类型的顺序不同。

(3)还需要注意一点:

方法的返回值不作为方法重载的判断条件,和方法的参数有关。

在我们常用的函数方法中就有重载的,系统给出的,有好多就是只有参数不同,进行重载。

2. 使用计算机计算组合数:

内容要求(1)使用组合数公式利用n!来计算(2)使用递推的方法用杨辉三角形计算(3) 使用递归的方法用组合数递推公式计算

1)源代码

import java.util.Scanner;

//(1)使用组合数公式利用n!来计算(2)使用递推的方法用杨辉三角形计算(3) 使用递归的方法用组合数递推公式计算

public class suanfashu {

public static  void main(String args[])

{

System.out.println("组合数:"+s1(8,5));

long s;

s=s2(8)/(s2(5)*s2(8-5));

System.out.println("组合数:"+s);

}

static long s1(int n,int k)//第一种方法,用递推方法求组合数

{

long Cnn=1,Ckk=1,Cnk=1;

for(int i=1;i<=n;i++)

{

Cnn=Cnn*i;

}

for(int i=1;i<=k;i++)

{

Ckk=Ckk*i;

}

for(int i=1;i<=n-k;i++)

{

Cnk=Cnk*i;

}

return Cnn/(Ckk*Cnk);

}

static //第二种方法,递归

long s2(int n)

{

if(n==0||n==1)return 1;

return n*s2(n-1);

}

}

2)编译错误

利用递归方法是必须要有终结的条件,没有终结条件时就会报错,在写函数时必须要有static,不然就不能运行出来了,还有String args[]也必须要有,否则就不能找到函数main函数了,不能运行。

3)结论

递归就是“自己调用自己”,特点有他的递归是先从大到小,再从小到大;

每个步骤要干的事情都是类似的,只不过其规模“小一号”;必须要保持递归调用的过程可以终结,每个递归函数一定有一个控制递归可以终结的变量;

递推”是“从前到后”,先求第1项,然后,在此基础上求第2项,第3项,直至第n项,通常可以直接使用循环语句实现。

4)截图

5)设计思想

组合数求值,用到了递归和递推,用两个方法,分别表示这两种方法,之后在主方法中调用这两种方法,输出结果。

3.

(1)源代码

import java.math.BigInteger;

import java.util.Scanner;

public class CalculateN {

/**

* @param args

*/

public static void main(String[] args) {

System.out.print("请输入N:");

Scanner scanner=new Scanner(System.in);

int number=scanner.nextInt();

System.out.println(number+"!="+calculateN2(number));

}

public static long calculateN(int n) {

if(n==1 || n==0){

return 1;

}

return n*calculateN(n-1);

}

public static BigInteger calculateN2(int n) {

if(n==1 || n==0){

return BigInteger.valueOf(1);

}

return BigInteger.valueOf(n).multiply(calculateN2((n-1)));

}

}

(2)程序结果截图

(3)结果分析

结果是负数,本来应该是整数的,但是由于阶乘后结果太大,超出范围,所以就会出现乱码,可以用到大数来表示,这样就不会出现溢出的情况了。

public static BigInteger calculateN2(int n) {

if(n==1 || n==0){

return BigInteger.valueOf(1);

}

return BigInteger.valueOf(n).multiply(calculateN2((n-1)));

}

改后的截图:

不会有溢出了。

4.汉诺塔问题

(1)源程序

package demo;

//用递归方式编程解决汉诺塔问题。

//陈晓阳 2016.10.19

public class TowersOfHanoi

{

//递归的移动塔上的盘子

public static void solveTowers( int disks, int sourcePeg,

int destinationPeg, int tempPeg )

{

// base case -- only one disk to move

if ( disks == 1 )//只剩一个盘子就退出

{

System.out.printf( "\n%d --> %d", sourcePeg, destinationPeg );

return;//return空,去掉后就会出错

}

//将disks-1个盘子借用目标塔从起始塔移动到中间塔

solveTowers( disks - 1, sourcePeg, tempPeg, destinationPeg );

//destinationPeg是最终的塔;sourcePeg表示起始塔, tempPeg表示中间塔

// 输出结果,从开始点->终点

System.out.printf( "\n%d --> %d", sourcePeg, destinationPeg );

// 移动中间塔上的disks-1个到目标塔

solveTowers( disks - 1, tempPeg, destinationPeg, sourcePeg );

}

public static void main( String[] args )

{

int startPeg = 1; // 开始位置设为1

int endPeg = 3; //目标塔设为3

int tempPeg = 2; // 中间塔设为2

int totalDisks = 3; // 盘子的个数

// 调用递归方法

solveTowers( totalDisks, startPeg, endPeg, tempPeg );

} // end main

} // end class TowersOfHanoi

(2)设计思想

首先将起始塔上的n-1个盘子移到中间塔上,借助目标塔;然后再将第n个移到目标塔上,中间塔上的n-1个盘子移到目标塔上,借助起始塔。移动借助一个方法,将方法写成递归函数,递归调用。

(3)结果截图

(4)编译结果分析:

首先一定要分析清楚是怎样移动的,将这些步骤写成函数,递归调用;每一次移动一定要输出。理解起来容易,但是程序写起来确实不太好写,理解程序有一些难。

5.回文数

(1)源程序

package demo;

import javax.swing.JOptionPane;

public class Number {

public static void main(String args[])

{

int number=0,d5,d4,d3,d2,d1;

String str=JOptionPane.showInputDialog("输入一个1到99999之间的数");

number=Integer.parseInt(str);//取所输入的数

if(number>=1&&number<=99999)//判断number是否在1-99999之间

{

d5=number/10000;//表示万位

d4=number%10000/1000;//表示千位

d3=number%1000/100;//表示百位

d2=number%100/10;//表示十位

d1=number%10;//表示个位

if(d5>0)//判断是否是5位数,是的话就是否为回文数

{

System.out.println(number+"是5位数");

if(d5==d1&&d4==d2)

{

System.out.println(number+"是回文数");

}

else

{

System.out.println(number+"不是回文数");

}

}

else if(d4>0)//判断是否是四位数,如果是四位数就判断是否为回文数;否则就判断是否为三位数

{

System.out.println(number+"是4位数。");

if(d4==d1&&d3==d2)

{

System.out.println(number+"是回文数");

}

else

{

System.out.println(number+"不是回文数");

}

}

else if(d3>0)//判断是否是三位数,是三位数就判断是否是回文数,不是三位数就判断是否是两位数

{

System.out.println(number+"是3位数");

if(d3==d1)

{

System.out.println(number+"是回文数");

}

else

{

System.out.println(number+"不是回文数");

}

}

else if(d2>0)//判断是否是两位数,是的话就判断是否是回文数,不是就判断是否是一位数

{

System.out.println(number+"是2位数");

if(d2==d1)

{

System.out.println(number+"是回文数");

}

else

{

System.out.println(number+"不是回文数");

}

}

else if(d1!=0)

{

System.out.println(number+"是1位数");

System.out.println(number+"是回文数");

}

}

else

{

System.out.println(number+"不在1-99999之间");

}

}

}

(2)设计思想

输入一个数,判断是不是在1-99999之间,分别得到输入的数的各位上的数字,判断是几位数,接着判断是不是回文数,输出判断后的结果,要注意偶数位数和奇数位数不一样,偶数比较的是前一半和后一半,奇数比较的是前一半和后一半,中间剩下一个,不用比较。当是一位数时直接输出是回文数。

(3)结果截图

java函数方法的更多相关文章

  1. java函数方法学习

    1.函数(方法)定义 类中特定功能小程序 2.函数定义格式 修饰符 返回值类型 函数名 (参数类型 形式参数) { 执行语句; return 返回值 } 函数功能实现的2个明确 1.这个功能的结果是什 ...

  2. paip.函数方法回调机制跟java php python c++的实现

    paip.函数方法回调机制跟java php python c++的实现 作者Attilax 艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http:// ...

  3. JAVA基础语法:函数(方法)、类和对象(转载)

    4.JAVA基础语法:函数(方法).类和对象 函数 在java中函数也称为方法,是一段具备某种功能的可重用代码块. 一个函数包括这几部分: 函数头 函数头包括函数访问修饰符,函数返回值类型, 函数名, ...

  4. Java:方法的参数是传值还是传引用

    Java中方法的参数总是采用传值的方式. 下列方法欲实现对象的交换,但实际上是不能实现的. public void swap(simpleClass a,simpleClass b){ simpleC ...

  5. 初步认知java的方法

    1.正确区分函数和方法: 面向对象的语言叫做方法,面向过程的语言叫做函数,两者的意义是一样的,只是叫法不同.java是面向对象的语言,所以用方法. 2.方法的定义: 就是有名字的代码段 3.方法的目的 ...

  6. java函数参数默认值

    java函数参数默认值 今天,需要设定java函数参数的默认值,发现按照其它语言中的方法行不通 java中似乎只能通过函数的重载来实现 函数参数默认代码

  7. 几种任务调度的 Java 实现方法与比较

    综观目前的 Web 应用,多数应用都具备任务调度的功能.本文由浅入深介绍了几种任务调度的 Java 实现方法,包括 Timer,Scheduler, Quartz 以及 JCron Tab,并对其优缺 ...

  8. JAVA本地方法详解,什么是JAVA本地方法?

    一. 什么是Native Method   简单地讲,一个Native Method就是一个java调用非java代码的接口.一个Native Method是这样一个java的方法:该方法的实现由非j ...

  9. JS调用Java函数--DWR框架

    (1)dwr与ssh框架整合教程dwr框架介绍. DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJA ...

随机推荐

  1. react-native-picker 实现省市区 时间日期组件

    github示例以及详细参数:https://github.com/beefe/react-native-picker 先 安装 link npm install react-native-picke ...

  2. 排查bug的步骤

    原创文章,欢迎阅读,禁止转载. bug预防C/C++代码发布前的检查:检查有没有低级错误,可用cppcheck (bug预防是指在写程序的时候,bug没出现,积极的进行预防,减少.包括良好的编码风格. ...

  3. 浅谈 REST 和 RESTFul API

    RESTFul API的特点: 基于“资源”,数据也好.服务也好,在RESTFul设计里一切都是资源. 无状态.一次调用一般就会返回结果,所有的资源,都可以通过URI定位 URL中通常不出现动词,只有 ...

  4. 无法解析db.properties,spring报错:Caused by: java.sql.SQLException: unkow jdbc driver : ${url}

    db.properties中配置了url等jdbc连接属性: driver=org.sqlite.JDBCurl=jdbc:sqlite:D:/xxx/data/sqliteDB/demo.dbuse ...

  5. 解决linux中ssh登录Warning:Permanently added (RSA) to the list of known hosts

    原因: 在执行scp id_rsa.pub root@hostname:/root/.ssh这一步时,没在本机的/root/.ssh下生成known_hosts文件. 解决方案: vi /etc/ss ...

  6. java 中 Integer 传参方式的问题

    Java本身都是值传递式的调用,对于对象传递的是地址值.给地址值重新赋值等于重新指向,不会影响外层. 而且这里Integer对象也有特殊性.其实现上可能类似 class Integer{ final ...

  7. docker仓库harbor搭建随笔

    docker除了自己的registry仓库工具外,还有vmware出品的harbor,harbor集成了ui界面,用户级别认证,重要的是对镜像管理比较全面,可以删除镜像,下面是 简单的部署指南 首先: ...

  8. avalon2学习教程05属性操作

    avalon2与avalon1的属性操作虽然都是使用ms-attr,但用法完全不一样. avalon1是这样操作属性的 其语法为 ms-attr-valueName="vmProp" ...

  9. Android DevArt5:如何在Android中创建多线程?

    本篇内容: 如何在Android中创建多进程?查看进程的三种方式有哪些? 多进程模式的运行机制?- 演示了多进程出现问题中的两种情况: 静态成员失效 Application多次创建 IPC基础概念介绍 ...

  10. java 代码块,静态代码块,构造器等的执行顺序

    写了一段测试代码,如下: public class ExecutionSequence extends fatherClass{    static{        System.out.printl ...