→ james732:板規4.1 11/20 14:03
補充一些資料
使用軟體:Ejs http://goo.gl/ehZ05
定義兩個變數
double z = 5;
string T ="16*z+11*8"; //(想做成使用者輸入)
做法
先搜尋出+ - * / 這些特殊字串 及 未知變數 z 的位置
利用這些位置去分斷這些字串
變成:
str[n] = ("16","*","z","+","11","*","8");
迴圈判斷未知數z
for (i=0;i<n;i++){
if(str[i]=="z") str[i] = z;
}
迴圈判斷*/
for (i=0;i<n;i++){
if(str[i]=="*") str[i] = str[i-1]*str[i+1]; //須移除掉str[i-1] str[i+1]
if(str[i]=="/") str[i] = str[i-1]/str[i+1];
}
再做個迴圈按照順序+-
這樣一來感覺十分龐大
還要考慮()、sin、^等等
但是如果在程式內部直接寫
double z = 5;
double y = 6*z+11*8;
馬上有答案
所以才想問看看能不能把字串直接轉成運算
也查過了
double :
Double.parseDouble(String s) : 將 s 轉換成 double
float :
Double.parseFloat(String s) : 將 s 轉換成 float
int :
Integer.parseInt(String s) : 將 s 轉換成 int
long :
Long.parseLong(String s) : 將 s 轉換成 long
但上面s的形態大概只能
s = "123";
s = "1.23";
這樣子
※ 編輯: driftseed 來自: 1.170.131.46 (11/20 16:24)
→ ogamenewbie:1. char, stack, while, switch 11/20 15:56
→ ogamenewbie:2. 可以 11/20 15:56
→ ogamenewbie:感謝樓上 james732 幫忙, 不過再沒有求程式碼的情況.. 11/20 15:59
→ ogamenewbie:我覺得是還可以不用引用 4.1 11/20 15:59
→ driftseed:ogame版主 所以只能跑迴圈 慢慢處理這問題嗎 11/20 16:31
→ ogamenewbie:如果你覺得這很龐大的話, 建議你可以去找一下JDK的 11/20 17:53
→ ogamenewbie:source來看一下裡面是怎麼處理那些讓你平常可以很方便 11/20 17:53
→ ogamenewbie:就迅速使用的方法. 11/20 17:54
→ ogamenewbie:而且這種基礎的問題,其實是訓練你的拆解分析問題的能 11/20 17:56
→ ogamenewbie:力 (先不論實作部分), 如果你覺得這種程度的問題已經 11/20 17:57
→ ogamenewbie:很複雜, 那你可能要多拿一些問題來訓練自己的思考 11/20 17:57
→ ogamenewbie:此外, 覺得現有的方法很難用, 也有可能是嶄新方法的開 11/20 17:58
→ ogamenewbie:端... 11/20 17:59
→ TonyQ:這其實是一個expression,所以你需要有grammer/parser 11/21 00:13
推 yukang:放大絕...XD call javascript 的 eval 來產結果XD 11/22 13:43
THANHS~
因為這是自己平常閒來沒事亂做來玩的,所以最後我改用javascript做了...
http://www.mediafire.com/?c4h9h2l44ivv2j5
*.html檔
功能:解方程式
但又產生問題了...javascript在小數運算不是很好...
只能產生近似解~
(我沒有想問javascript的事,只是報告一下進度)
→ luoqr:我怎麼想到什麼preorder,postorder的東西... 11/22 15:06
※ 編輯: driftseed 來自: 1.170.128.11 (11/25 13:02)