凯鲁嘎吉
用书写铭记日常,最迷人的不在远方

动手动脑4

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

//类的对象实例化
//王荣荣 2016/10/16
public 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/15
import 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/16
import 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/15
import 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+"不是回文!");    
    }
}

结果:

      

 

posted on 2016-11-06 17:24  凯鲁嘎吉  阅读(429)  评论(0编辑  收藏  举报