1. 程式人生 > >第四周 Java課件內容動手動腦

第四周 Java課件內容動手動腦

jtext vax overload 隨機 values nts gnu asi argument

1.JDK中的Math類

package ke1;


public class TestMath
{
    public static void main(String[] args) 
    {
        /*---------下面是三角運算---------*/
        //將弧度轉換角度
        System.out.println("Math.toDegrees(1.57):" + Math.toDegrees(1.57)); 
        //將角度轉換為弧度
        System.out.println("Math.toRadians(90):" + Math.toRadians(90));
        
//計算反余弦,返回的角度範圍在 0.0 到 pi 之間。 System.out.println("Math.acos(0.3):" + Math.acos(1.2)); //計算反正弦;返回的角度範圍在 -pi/2 到 pi/2 之間。 System.out.println("Math.asin(0.8):" + Math.asin(0.8)); //計算反正切;返回的角度範圍在 -pi/2 到 pi/2 之間。 System.out.println("Math.atan(2.3):" + Math.atan(2.3));
//計算三角余弦。 System.out.println("Math.cos(1.57):" + Math.cos(1.57)); //計算值的雙曲余弦。 System.out.println("Math.cosh(1.2 ):" + Math.cosh(1.2 )); //計算正弦 System.out.println("Math.sin(1.57 ):" + Math.sin(1.57 )); //計算雙曲正弦 System.out.println("Math.sinh(1.2 ):" + Math.sinh(1.2 ));
//計算三角正切 System.out.println("Math.tan(0.8 ):" + Math.tan(0.8 )); //計算雙曲余弦 System.out.println("Math.tanh(2.1 ):" + Math.tanh(2.1 )); //將矩形坐標 (x, y) 轉換成極坐標 (r, thet));,返回所得角 theta。 System.out.println("Math.atan2(0.1, 0.2):" + Math.atan2(0.1, 0.2)); /*---------下面是取整運算---------*/ //取整,返回小於目標數的最大整數。 System.out.println("Math.floor(-1.2 ):" + Math.floor(-1.2 )); //取整,返回大於目標數的最小整數。 System.out.println("Math.ceil(1.2):" + Math.ceil(1.2)); //四舍五入取整 System.out.println("Math.round(2.3 ):" + Math.round(2.3 )); /*---------下面是乘方、開方、指數運算---------*/ //計算平方根。 System.out.println("Math.sqrt(2.3 ):" + Math.sqrt(2.3 )); //計算立方根。 System.out.println("Math.cbrt(9):" + Math.cbrt(9)); //返回歐拉數 e 的n次冪。 System.out.println("Math.exp(2):" + Math.exp(2)); //返回 sqrt(x2:" +y2),沒有中間溢出或下溢。 System.out.println("Math.hypot(4 , 4):" + Math.hypot(4 , 4)); // 按照 IEEE 754 標準的規定,對兩個參數進行余數運算。 System.out.println("Math.IEEEremainder(5 , 2):" + Math.IEEEremainder(5 , 2)); //計算乘方 System.out.println("Math.pow(3, 2):" + Math.pow(3, 2)); //計算自然對數 System.out.println("Math.log(12):" + Math.log(12)); //計算底數為 10 的對數。 System.out.println("Math.log10(9):" + Math.log10(9)); // 回參數與 1 之和的自然對數。 System.out.println("Math.log1p(9):" + Math.log1p(9)); /*---------下面是符號相關的運算---------*/ //計算絕對值。 System.out.println("Math.abs(-4.5):" + Math.abs(-4.5)); //符號賦值,返回帶有第二個浮點數符號的第一個浮點參數。 System.out.println("Math.copySign(1.2, -1.0):" + Math.copySign(1.2, -1.0)); //符號函數;如果參數為 0,則返回 0;如果參數大於 0,則返回 1.0;如果參數小於 0,則返回 -1.0。 System.out.println("Math.signum(2.3):" + Math.signum(2.3)); /*---------下面是大小相關的運算運算---------*/ //找出最大值 System.out.println("Math.max(2.3 , 4.5):" + Math.max(2.3 , 4.5)); //計算最小值 System.out.println("Math.min(1.2 , 3.4):" + Math.min(1.2 , 3.4)); //返回第一個參數和第二個參數之間與第一個參數相鄰的浮點數。 System.out.println("Math.nextAfter(1.2, 1.0):" + Math.nextAfter(1.2, 1.0)); //返回比目標數略大的浮點數 System.out.println("Math.nextUp(1.2 ):" + Math.nextUp(1.2 )); //返回一個偽隨機數,該值大於等於 0.0 且小於 1.0。 System.out.println("Math.random():" + Math.random()); } }

2.Math.random()生成隨機數

// RandomInt.java
// Shifted, scaled random integers
import javax.swing.JOptionPane;

public class RandomInt {
   public static void main( String args[] )
   {
      int value;
      String output = "";

      for ( int i = 1; i <= 20; i++ ) {
         value = 1 + (int) ( Math.random() * 6 );
         output += value + "  ";
         
         if ( i % 5 == 0 )
            output += "\n";
      }

      JOptionPane.showMessageDialog( null, output,
         "20 Random Numbers from 1 to 6",
         JOptionPane.INFORMATION_MESSAGE );

      System.exit( 0 );
   }
}

3.JDK提供了一個Random類,可以更方便地生成隨機數

package ke1;
// RandomInt.java
// Shifted, scaled random integers
import javax.swing.JOptionPane;

public class RandomInt {
   public static void main( String args[] )
   {
      int value;
      String output = "";

      for ( int i = 1; i <= 20; i++ ) {
         value = 1 + (int) ( Math.random() * 6 );
         output += value + "  ";
         
         if ( i % 5 == 0 )
            output += "\n";
      }

      JOptionPane.showMessageDialog( null, output,
         "20 Random Numbers from 1 to 6",
         JOptionPane.INFORMATION_MESSAGE );

      System.exit( 0 );
   }
}

技術分享圖片

4.取種子產生隨機數

相同“種子(seed)”的Random對象會生成相同的隨機數。

package ke1;
import java.util.Random;

public class TestSeed
{
    public static void main(String[] args)
    {
        Random r1 = new Random(50);
        System.out.println("第一個種子為50的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("---------------------------");
        
        Random r2 = new Random(50);
        System.out.println("第二個種子為50的Random對象");
        System.out.println("r2.nextBoolean():\t" + r2.nextBoolean());
        System.out.println("r2.nextInt():\t\t" + r2.nextInt());
        System.out.println("r2.nextDouble():\t" + r2.nextDouble());
        System.out.println("r2.nextGaussian():\t" + r2.nextGaussian());
        System.out.println("---------------------------");
        
        Random r3 = new Random(100);
        System.out.println("種子為100的Random對象");
        System.out.println("r3.nextBoolean():\t" + r3.nextBoolean());
        System.out.println("r3.nextInt():\t\t" + r3.nextInt());
        System.out.println("r3.nextDouble():\t" + r3.nextDouble());
        System.out.println("r3.nextGaussian():\t" + r3.nextGaussian());
        
       
        Random r4 = new Random(System.currentTimeMillis());
        System.out.println("以當前時間為種子的Random對象");
        System.out.println("r3.nextBoolean():\t" + r4.nextBoolean());
        System.out.println("r3.nextInt():\t\t" + r4.nextInt());
        System.out.println("r3.nextDouble():\t" + r4.nextDouble());
        System.out.println("r3.nextGaussian():\t" + r4.nextGaussian()); 
    }
}

技術分享圖片

5.利用隨機數來模擬骰子滾動的統計結果

// RollDie.java
// Roll a six-sided die 6000 times
import javax.swing.*;

public class RollDie {
   public static void main( String args[] )
   {
      int frequency1 = 0, frequency2 = 0,
          frequency3 = 0, frequency4 = 0,
          frequency5 = 0, frequency6 = 0, face;
   
      // summarize results
      for ( int roll = 1; roll <= 6000; roll++ ) {
         face = 1 + (int) ( Math.random() * 6 );
   
         switch ( face ) {
            case 1:
               ++frequency1;
               break;
            case 2:
               ++frequency2;
               break;
            case 3:
               ++frequency3;
               break;
            case 4:
               ++frequency4;
               break;
            case 5:
               ++frequency5;
               break;
            case 6:
               ++frequency6;
               break;
         }
      }

      JTextArea outputArea = new JTextArea( 7, 10 );

      outputArea.setText(
         "Face\tFrequency" +
         "\n1\t" + frequency1 +
         "\n2\t" + frequency2 +
         "\n3\t" + frequency3 +
         "\n4\t" + frequency4 +
         "\n5\t" + frequency5 +
         "\n6\t" + frequency6 );

      JOptionPane.showMessageDialog( null, outputArea,
         "Rolling a Die 6000 Times",
         JOptionPane.INFORMATION_MESSAGE );
      System.exit( 0 );
   }
}

技術分享圖片

6. JDK5.0起,Java支持可變參數的方法

package ke1;
import java.awt.*;
import java.awt.event.*;
import java.util.*;


public class VariableArgumentsTest{
    
    public static double max(double...values)
    {
        double largest=Double.MIN_VALUE;
        for (double v:values)
            if(v>largest) largest=v;
        return largest;
    }

    public static void main(String args[]) {
    
         System.out.println("Max:"+max(1,11,300,2,3));
            
    }
}

技術分享圖片

7.重載

package ke1;
// 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;
    }
}

技術分享圖片

8.階乘遞歸

package ke1;
import java.math.BigInteger;
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)));
    }
}

技術分享圖片

9.求平方數的靜方法Square。

package ke1;
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;
    }
}

技術分享圖片

第四周 Java課件內容動手動腦