Java動手動腦02
一、平方數靜方法:
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
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
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
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