看板 java 關於我們 聯絡資訊
當使用者在文字欄輸入 5*6+1 如何把它變成一個運算得到答案 問題二 有辦法再多一個變數x之類的嘛 對話框一:輸入x的值x= 5 對話框二:x*6+1 然後得到正確答案?? -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.170.131.46
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)