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、查看一下JDK中System.out.println()方法,你发现了什么?
查阅资料:System是java.Lang里面的一个类。Out是System提供的用于标准输出的流,在没有重定向的情况下,会直接打印到终端,而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)));
}
}
java中int类型的数值占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))); }