02-课堂问题总结归纳

1、编写一个方法,使用以上算法生成指定数目(比如1000个)

代码:import java.util.Random;

import java.util.Scanner;

public class Suijishu {

public static void main(String[] args) {

Random rand=new Random();

Scanner in=new Scanner(System.in);

int i;

System.out.println("请输入产生随机数的个数:");

i=in.nextInt();

for(int j=0;j<i;j++)

{

int x=rand.nextInt(100);//随机产生一个种子

int seed=(7^5*x+0)%(21483647-1);

System.out.println(seed+"");

}

}

}

2、请看以下代码,你发现有什么特殊之处吗?

代码:

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的方法重载,类型不同。

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

1)方法名相同;

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

3、查看一下JDKSystem.out.println()方法,你发现了什么?

查阅资料:Systemjava.Lang里面的一个类。OutSystem提供的用于标准输出的流,在没有重定向的情况下,会直接打印到终端,而println这个方式实际上是prinstream类提供的功能。

4、思考以下代码所计算出50的阶乘为什么会是负数?

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)));
}
}

javaint类型的数值占32位,是有符号的。类似地,long类型的数值占64位:

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

Java提供了一个BigInteger类,支持大整数的加减乘除运算。

public static BigInteger calculateN2(int n) {

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

{

return BigInteger.valueOf(1);

}

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

原文地址:https://www.cnblogs.com/xxlya/p/7659948.html