1. 程式人生 > >Java動手動腦02

Java動手動腦02

隨機數生成 數量 什麽 n) void tro 技術分享 spa values

一、平方數靜方法:

public class SquareInt {

public static void main(String[] args) {

int result;

for (int x = 1; x <= 10; x++) {

result = square(x);

// Math庫中也提供了求平方數的方法

// result=(int)Math.pow(x,2);

System.out.println("The square of " + x + " is " + result + "\n");

}

}

// 自定義求平方數的靜態方法

public static int square(int

y) {

return y * y;

}

}

結果:

The square of 1 is 1

The square of 2 is 4

The square of 3 is 9

The square of 4 is 16

The square of 5 is 25

The square of 6 is 36

The square of 7 is 49

The square of 8 is 64

The square of 9 is 81

The square of 10 is 100

二、隨機數生成:

Math函數中自帶的Math.Random()生成隨機數。

還可以自定義隨機數生成

代碼:

import

java.util.*;

public class suiji {

public int suij(int n)

{

int a=16807; //a的值

int m=(int)Math.pow(2, 31)-1; //設置m的值

int x=(a*n)% m; //利用取余數生成隨機數

return x;

}

public static void main( String args[] )

{

suiji x=new suiji();

Random a=new Random();

int num=a.nextInt(); //隨機生成初始隨機數

Scanner input=new

Scanner(System.in);

System.out.println("請輸入生成隨機數的數量:");

int n=input.nextInt(); //輸入生成隨機數數量

for(int i=1;i<=n;i++)

{

num=x.suij(num);

System.out.print(x.suij(num)+" ");

System.out.println();

}

}

}

結果:

技術分享

三、Java的可變參數:

max(double ... values) 括號內的參數數量可以變化

…”位於變量類型和變量名之間,前後有無空格均可。調用可變參數方法時,編譯器為該可變參數隱含創建一個數組,在方法體中以數組的形式訪問可變參數。

請看以下代碼,你發現了有什麽特殊之處嗎?

// 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("\nThe 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;

}

}

輸出結果:

The square of integer 7 is 49

The square of double 7.5 is 56.25

因為參數類型不同、方法名相同所以方法重載。

Java的“方法重載(overload)”特性。

滿足以下條件的兩個或多個方法構成“重載”關系:

1)方法名相同;(2)參數類型不同,參數個數不同,或者是參數類型的順序不同。方法的返回值不作為方法重載的判斷條件。

四、CalculateN示例程序中的BUG:出現負數

由於計算機使用固定的位數來保存數值,因此,能處理的數值大小是有限的,當要處理的數值超過了這一範圍時,計算機將會自動截斷數值的二進制表示為它所能處理的最多位數,這將導致錯誤的處理結果。

所以用BigInteger類,支持大整數的加減乘除運算。

public static BigInteger calculateN2(int n) {

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

{

return BigInteger.valueOf(1);

}

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

五、比較兩個浮點數:

double i = 0.0001;

double j = 0.00010000000000000001;

System.out.println(i==j); //輸出:true

計算機不能精確地表達浮點數(特殊形式的除外),因此,當需要比較兩個浮點數是否相等時,應該比較其差的絕對值是否在某個允許範圍之內即可。

if ( Math.Abs(i - j) < 1e-10 )

System.out.println("true");

else

System.out.println("false");

Java動手動腦02