1.java中利用static(静态),将方法放入类中。如果不加static,必须先实例化出来一个类,之后再通过实例化类名+方法的形式调用。
2.编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数。
3.请看以下代码,你发现了有什么特殊之处吗?
// 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(" The 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; } }
结果:
分析:这段代码体现了java中的方法重载,方法名相同但参数类型不同。在输入int类型时自动调用int类型的方法,在输入double类型时自动调用double类型的方法。
4.练习:查看一下JDK中System.out.println()方法,你发现了什么?
System是jdk自带的一个类,有很多的静态方法,也就是static的,有一个类变量out是PrintStream类型的,PrintStream有print和println方法。
5.使用计算机计算组合数
import java.util.Scanner; public class ZuheShu { public static void main(String[]args){ System.out.println("请输入组合数的n和k:"); Scanner in1=new Scanner(System.in); int n=in1.nextInt(); Scanner in2=new Scanner(System.in); int k=in2.nextInt(); int result=jiechen(n)/(jiechen(k)*jiechen(n-k)); System.out.println("结果为:"+result); in1.close(); in2.close(); } public static int jiechen(int n) { int jieguo=1; if(n<0) { System.out.println("error!"); } else if(n==0||n==1) { jieguo=1; } else { jieguo=jiechen(n-1)*n; } return jieguo; } }
结果:
(2)使用递推的方法用杨辉三角形计算
import java.util.Scanner; public class YangHui { public static void main(String[]args){ System.out.println("请输入组合数的n和k:"); Scanner in1=new Scanner(System.in); int n=in1.nextInt(); Scanner in2=new Scanner(System.in); int k=in2.nextInt(); System.out.println("结果为:"+result(n,k)); in1.close(); in2.close(); } public static int result(int n,int m) { if(m==0||n==m) return 1; int s=Math.min(m, n-m); int f=1,f1=0; for(int i=1;i<=s;i++) { f1=f*(n-i+1)/(i); f=f1; } return f1; } }
结果:
(3)使用递归的方法用组合数递推公式计算
import java.util.Scanner; public class DiGui { public static void main(String[]args){ System.out.println("请输入组合数的n和k:"); Scanner in1=new Scanner(System.in); int n=in1.nextInt(); Scanner in2=new Scanner(System.in); int k=in2.nextInt(); System.out.println("组合数结果为:"+result(n,k)); in1.close(); in2.close(); } public static int result(int m,int n) { if(m<0||n<0||m<n) return 0; if(m==n) return 1; if(n==1) return m; return result(m-1,n)+result(m-1,n-1); } }
结果:
6.汉诺塔
public class TowerOFHanoi { public static void solveTowers( int disks, int sourcePeg, int destinationPeg, int tempPeg ) { if ( disks == 1 ) { System.out.printf( " %d --> %d", sourcePeg, destinationPeg ); return; } solveTowers( disks - 1, sourcePeg, tempPeg, destinationPeg ); System.out.printf( " %d --> %d", sourcePeg, destinationPeg ); solveTowers( disks - 1, tempPeg, destinationPeg, sourcePeg ); } public static void main( String[] args ) { int startPeg = 1; int endPeg = 3; int tempPeg = 2; int totalDisks = 3; solveTowers( totalDisks, startPeg, endPeg, tempPeg ); } }
结果:
7.回文数
import java.util.*; public class HuiWen { public static void main(String[]args){ String str=""; System.out.println("请输入一个字符串:"); Scanner in=new Scanner(System.in); str=in.nextLine(); StringBuffer hw=new StringBuffer(str); hw.reverse(); int n=0; for(int i=0;i<str.length();i++){ if(str.charAt(i)==hw.charAt(i)) n++; } if(n==str.length()) System.out.println(str+"是回文字符串"); else System.out.println(str+"不是回文字符串"); } }
结果: