2005年計算機在物理上應用課程(2005/09/06-2006/06)
登入

Ejs 內定資料格式:

語法
格式
範例
int
整數
int i=0; 指定變數 i 為整數 且設定為 0
double
實數
double z=1.0 指定變數 z 為實數 且設定為 1.0
boolean
真假值
boolean view=true;可能值為 真或假 true or false 
String
字串
String title="標題" 指定變數 title為內容為 "標題" 的字串
Objec
物件
Color clr=new java.awt.Color(0,0,255,128); 指定 clr 為顏色變數, 其值為藍色 

數學運算範例:
範例說明簡易寫法
x=x+1;代表取出 x 的現有數值 加 1 後 成為新的 x 數值x += 1; 或 x++; 
x=x-1;代表取出 x 的現有數值 減 1 後 成為新的 x 數值x -= 1; 或 x--;
x=x*5;代表取出 x 的現有數值 乘 5 後 成為新的 x 數值x *= 5;
x=x/5;代表取出 x 的現有數值 除 5 後 成為新的 x 數值x /= 5;
x=x%5;代表取出 x 的現有數值 除 5 後的餘數 成為新的 x 數值x %= 5;

邏輯關係式範例:
x > y
若 x 大於 y 傳回 true, 否則傳回 false 
x >= y
若 x 大於 y 或等於y 傳回 true, 否則傳回 false
x ==y 
若 x 等於 y 傳回 true, 否則傳回 false (注意有兩個等號 以便和數學運算區分)
x <= y
若 x 小於 y 或等於 y 傳回 true, 否則傳回 false
x < y
若 x 小於 y 傳回 true, 否則傳回 false

邏輯運算範例:
a && b
同時滿足 a 和 b 傳回 true, 否則傳回 false
a || b
滿足 a 或 b 傳回 true, 否則傳回 false
!a 
若 a 為 true 則傳回 false, 若 a 為 false 則傳回 true

不同格式間運算後的格式: 

int i=2; double x=3; x=i*x; 整數和實數運算後 傳回實數 因此 本運算沒問題
i= i*x; 是錯誤的運算式, 因為運算結果為整數 若改為 i=(int) (i*x); 則可以

常用的 java 數學函數


函數名稱
傳回數值格式說明
Math.abs(x)
double
x 的絕對值 
Math.sqrt(x)
double
x 的根號
Math.sin(x)
Math.cos(x)
Math.tan(x)
double
x 的三角函數
Math.asin(x)
Math.acos(x)
Math.atan(x)
Math.atan2(x,y) 
double
三角反函數
cta=Math.atan(x) 代表 Math.tan(cta)=x;
cta=Math.atan2(x,y) 代表 Math.tan(cta)=y/x; 本函數會處理x=0的問題
Math.ceil(x)
Math.floor(x)
Math.rint(x) 
double
大於或等於 x 的最小整數
小於或等於 x 的最大整數
最接近x的整數
Math.exp(x)
double
傳回 指數 e 的 x 次方 即 ex
Math.log(x) 
double
x的指數(e為底)
Math.min(a,b)
Math.max(a,b) 
int 
傳回 a,b整數 的極小或極大整數值
Math.pow(x,y)
double
傳回 x 的 y 次方, xy

依條件 控制執行的語法 :
if (條件關係)甲指令;
else 乙指令;
若關係式為真執行 甲指令; 否則執行 乙指令. 例如:
if(x>5) y=y+3;

else y=y-5;
if(x>5){

   x+=3;
   y+=5;
} else {
   x-=3;
   y-=5;
}
switch(表示式){

 case 甲數值:甲指令; break;
      case 乙數值:乙指令; break;
        ...

        default: 其他指令; break;
}
若表示式和甲數值相等則處理甲指令,
和乙數值相等則處理乙指令...
若是皆不符合則處理 default 後的其他指令.
以上指令皆可以是以 { } 內的多個指令 
(記得:每個指令皆以分號 ; 結尾) 
while(關係式){

  指令;
}
當關係式為true時,持續執行 {} 內指令, 每執行一次檢查一次關係式
若一開始關係式為 false, 則不執行
do{

     指令;
} while (關係式);
先執行指令後 檢查關係式 若為true 則重複執行,直到關係式為false;
因此 指令 至少執行一次
for(甲指令;條件式;丙指令){

 乙指令;
}
先執行甲指令,
然後執行 {} 內乙指令
每完成 乙指令, 接著執行丙指令
然後若條件式為true 
則繼續執行乙/丙指令,否則結束
for(int i=0;i<n;i++){

   x=x+i;
}
for(int i=0,j=j+100;i<max;i++,j+=2){

 f[i][j]=100*i*j;
}

以下 範例是讓一個粒子 在隨機出現在 [-range/2, range/2] 之間

    x=range*(Math.random()-0.5);

    y=range*(Math.random()-0.5);
當我們練習想將一個粒子變成 轉變成100個粒子,首先需要將x,y 轉變為代表 100個粒子座標的向量
因此首先定義 n=100; 並選擇其在定義參變數區域的x,y 的維度格式欄位加上[n] 表示用來代表 n個粒子. 如此一來

x[0] 代表第 1 個粒子的 x 座標, x[1] 代表第 2 個粒子的 x 座標, ... ,x[n-1] 代表第 n 個粒子的 x 座標 
 為了讓這100個粒子都設定為出現在隨意的位置 並不需要將上面設定的公式重複100次, 而是利用以下語法 重複執行大括弧 { } 內部的指令

for (int i=0;i<n;i=i+1){
        x[i]=range*(Math.random()-0.5);

        y[i]= range*(Math.random()-0.5);  }

0最後修改紀錄: 2005/09/26(Mon) 15:47:02


尚未登入. (登入)

since 2011/06/20 18:23