[問題] 字串轉運算
當使用者在文字欄輸入
5*6+1
如何把它變成一個運算得到答案
問題二
有辦法再多一個變數x之類的嘛
對話框一:輸入x的值x= 5
對話框二:x*6+1
然後得到正確答案??
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.170.131.46
→
11/20 14:03, , 1F
11/20 14:03, 1F
補充一些資料
使用軟體: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)
→
11/20 15:56, , 2F
11/20 15:56, 2F
→
11/20 15:56, , 3F
11/20 15:56, 3F
→
11/20 15:59, , 4F
11/20 15:59, 4F
→
11/20 15:59, , 5F
11/20 15:59, 5F
→
11/20 16:31, , 6F
11/20 16:31, 6F
→
11/20 17:53, , 7F
11/20 17:53, 7F
→
11/20 17:53, , 8F
11/20 17:53, 8F
→
11/20 17:54, , 9F
11/20 17:54, 9F
→
11/20 17:56, , 10F
11/20 17:56, 10F
→
11/20 17:57, , 11F
11/20 17:57, 11F
→
11/20 17:57, , 12F
11/20 17:57, 12F
→
11/20 17:58, , 13F
11/20 17:58, 13F
→
11/20 17:59, , 14F
11/20 17:59, 14F
→
11/21 00:13, , 15F
11/21 00:13, 15F
推
11/22 13:43, , 16F
11/22 13:43, 16F
THANHS~
因為這是自己平常閒來沒事亂做來玩的,所以最後我改用javascript做了...
http://www.mediafire.com/?c4h9h2l44ivv2j5
*.html檔
功能:解方程式
但又產生問題了...javascript在小數運算不是很好...
只能產生近似解~
(我沒有想問javascript的事,只是報告一下進度)
→
11/22 15:06, , 17F
11/22 15:06, 17F
※ 編輯: driftseed 來自: 1.170.128.11 (11/25 13:02)