你的位置:首页 > Java教程

[Java教程]动手动脑4


1、求平方数的静态类方法Square.java,不用static但仍想在main中调用的处理方法。

//类的对象实例化//王荣荣 2016/10/16public class SquareIntTest {  public static void main(String[] args) {      for (int x=1; x <= 10; x++) {      SquareIntTest obj;  //创建类的示例obj      obj=new SquareIntTest();       int result = obj.square(x);      // Math库中也提供了求平方数的方法      // result=(int)Math.pow(x,2);      System.out.println("The square of " + x + " is " + result + "\n");    }  }  // 自定义求平方数的静态方法  public int square(int y) {        return y * y;  }}

结果:

        

2.编写一个方法,使用以下算法生成指定数目(比如1000个)的随机整数。

//王荣荣 2016/10/15import java.util.Random;public class Random1000 {  public static void main(String[] args)   {    Random r1 = new Random(1000);    System.out.println("第一个种子为1000的Random对象");    System.out.println("r1.nextBoolean():\t" + r1.nextBoolean());    System.out.println("r1.nextInt():\t\t" + r1.nextInt());    System.out.println("r1.nextDouble():\t" + r1.nextDouble());    System.out.println("r1.nextGaussian():\t" + r1.nextGaussian());    System.out.println("---------------------------");     }}

结果:

 

 

  3.请看以下代码,你发现了有什么特殊之处吗?

 

结果:

 

上述示例代码展示了Java的“方法重载(overload)”特性。计算7^2时,调用的是整型

public static int square(int x) {

return x * x;

     }

而计算7.5^2时,调用的是双精度类型

    public static double square(double y) {

return y * y;

     }

 满足以下条件的两个或多个方法构成“重载”关系:

(1)方法名相同;

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

以上重载是参数类型不同。

注意:方法的返回值不作为方法重载的判断条件。

  4.查看一下JDK中System.out.println()方法,你发现了什么? 

 

System.out.println()方法中实参表内可输入很多类型。

5.CalculateN示例程序中的BUG,50!出现负数。

 

原因:由于计算机使用固定的位数来保存数值,因此,能处理的数值大小是有限的,当要处理的数值超过了这一范围时,计算机将会自动截断数值的二进制表示为它所能处理的最多位数,这将导致错误的处理结果。

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

(1)使用组合数公式利用n!来计算

       

源代码:

import java.math.BigInteger;import java.util.Scanner;public class Zhuheshu {  public static void main(String[] args) {    System.out.print("请输入N:");    Scanner scanner=new Scanner(System.in);    int n=scanner.nextInt();    System.out.print("请输入M:");    Scanner scanner1=new Scanner(System.in);    int k=scanner1.nextInt();    System.out.println(ca(n).divide(ca(k).multiply(ca(n-k))));    }  public static BigInteger ca(int m) {    if(m==1 || m==0){      return BigInteger.valueOf(1);    }    return BigInteger.valueOf(m).multiply(ca((m-1)));  }}

结果:

      

7.递归编程解决汉诺塔问题。用Java实现

源程序:

//用递归方式编程解决汉诺塔问题//王荣荣 2016/10/16import java.util.Scanner;public class Hannuota {public static void main(String[] args){  System.out.print("请输入盘子的个数:");  Scanner scanner=new Scanner(System.in);  int disks=scanner.nextInt();//盘子的个数  final int source=1;//盘子的初始位置第一根柱子上  final int desk=3;//盘子的最终位置第三根柱子上  final int spare=2;//临时存放盘子的位置第二根柱子上  move(disks,source,desk,spare);}public static void move(int disks,int source,int desk,int spare){  if(disks==1)    System.out.println(source+"->"+desk);  else{    move(disks-1,source,spare,desk);  System.out.println(source+"->"+desk);  move(disks-1,spare,desk,source);  }}}

结果:

8.使用递归方式判断某个字串是否是回文( palindrome )

 

 //王荣荣2016/10/15import java.util.Scanner;public class Huiwen {  public static void main(String[] args){    String str="";    System.out.println("请输入一个字符串:");    Scanner in=new Scanner(System.in);    str=in.nextLine();    StringBuffer sb=new StringBuffer(str);    sb.reverse();    int n=0;    for(int i=0;i<str.length();i++){      if(str.charAt(i)==sb.charAt(i))        n++;    }    if(n==str.length())      System.out.println(str+"是回文!");    else System.out.println(str+"不是回文!");    }}

结果: