回答
這是一個不平凡的努力。我強烈建議你看看有什麼。例如Symja
您可能想看看java的腳本功能。看來你可以使用這個腳本引擎從Java執行Javascript(或其他腳本語言)。
你會在https://today.java.net/pub/a/today/2006/04/11/scripting-for-java-platform.html找到一些例子。
你在問什麼,是讓程序轉換(並可能解決)數學方程。這當然是可能的,並且有圍繞它的工具和肯定的API,但它絕對超越了你自己的Java程序的黑客攻擊。
如果你只是想計算給定公式的結果,那麼這是可行的。有趣的是,你可以在Google上投一個等式(例如(5 + 3)*(8-4)),它會給你結果。那麼,爲什麼不使用它呢? ;-)
當我們去面試時,他們問這個邏輯類型的問題。我遇到了同樣的問題。但由於這類問題,我無法成功面試。後來我在互聯網上搜索後發現了我自己的結果。朋友們都希望這樣做。
請按照此操作。我會給這充滿自由。
我將輸入方程作爲字符串像。
a * b * c + d/m-x。
得到這個方程作爲字符串對象。並使用以下功能:#
public void calc() throws IOException
{
String equation,store,get;
StringBuilder sb= new StringBuilder();
DataInputStream dis= new DataInputStream(System.in);
System.out.println("Enter the equation");
equation= dis.readLine();
equation="%"+equation+"%";
byte[] buf= equation.getBytes();
for(int i=0;i<equation.length();i++)
{
if(buf[i]>=97&&buf[i]<=122)
{
System.out.println("Enter the value for "+(char)buf[i]);
get=dis.readLine();
sb.append(get);
}
else
sb.append((char)buf[i]);
}
store= sb.toString();
char[] buf1= new char[25];
for(int i=0;i<store.length();i++)
{
buf1[i]=store.charAt(i);
}
for(int i=0;i<buf1.length;i++)
{
no.append(buf1[i]);
}
System.out.println(no.toString());
int m,n=0;
for(int i=0;i<no.length()-1;i++)
{
if('/'==no.charAt(i))
{
leftCount=rightCount=0;
m=findLeftValue(i-1)/findRightValue(i+1);
no.replace(i-leftCount, i+rightCount+1, String.valueOf(m));
i=0;
}
}
for(int i=0;i<no.length()-1;i++)
{
if('*'==no.charAt(i))
{
leftCount=rightCount=0;
m=findLeftValue(i-1) * findRightValue(i+1);
no.replace(i-leftCount, i+rightCount+1, String.valueOf(m));
i=0;
}
}
for(int i=0;i<no.length()-1;i++)
{
if('+'==no.charAt(i))
{
leftCount=rightCount=0;
m=findLeftValue(i-1) + findRightValue(i+1);
no.replace(i-leftCount, i+rightCount+1, String.valueOf(m));
i=0;
}
}
for(int i=0;i<no.length()-1;i++)
{
if('-'==no.charAt(i))
{
leftCount=rightCount=0;
m=findLeftValue(i-1) - findRightValue(i+1);
no.replace(i-leftCount, i+rightCount+1, String.valueOf(m));
i=0;
}
}
for(int i=0;i<no.length();i++)
{
if('%'==no.charAt(i))
{
no.deleteCharAt(i);
i=0;
}
}
System.out.println(no.toString());
}
public int findLeftValue(int i)
{
StringBuilder sb= new StringBuilder();
int x=0;
while(no.charAt(i)!='*'&&no.charAt(i)!='+'&&no.charAt(i)!='-'&&no.charAt(i)!='/' &&no.charAt(i)!='%')
{
leftCount++;
sb.insert(0, no.charAt(i));
i--;
}
x=Integer.parseInt(sb.toString());
return x;
}
public int findRightValue(int i)
{
StringBuilder sb= new StringBuilder();
int x;
while(no.charAt(i)!='*'&&no.charAt(i)!='+'&&no.charAt(i)!='-'&&no.charAt(i)!='/' &&no.charAt(i)!='%')
{
rightCount++;
sb.append(no.charAt(i));
i++;
}
x=Integer.parseInt(sb.toString());
return x;
}
這裏可能是未使用的變量可能是there.please找到並刪除它。 我沒有對計算設置任何偏好。只是我補充了流量。如果你改變流程,答案將會不同。所以,請記住。你也可以爲不同的操作員做同樣的事情。 還有一件事是,請在繼續功能之前驗證方程式。因爲它不會檢查方程是正確還是錯誤。(a + * d ++ c)。這是不正確的方程式。 該公式應該是正確的格式。像a + b * c-d/x。
享受..Break採訪中,讓你的正確的工作..
使用它friends..congralations .. – Noorul 2014-07-26 09:11:52
- 1. 如何計算算術表達式
- 2. Java:計算返回錯誤的答案?
- 3. 如何計算數學表達式的值並檢查用戶答案?
- 4. 算術表達式
- 5. 將Postfix表達式轉換爲中綴並計算後綴並給出答案
- 6. 工資算術返回錯誤的答案
- 7. 如何計算表達式
- 8. 如何計算表達式
- 9. 如何寫算術表達式在Haskell
- 10. 如何計算下列表達式中的算術運算次數?
- 11. 舍入算術表達式
- 12. BASH算術表達式
- 13. 解析算術表達式
- 14. 算術表達式語法
- 15. 算術表達式解析
- 16. 方案:如何評估算術表達式
- 17. 從值表中計算算術回報
- 18. 計算答案天mySQL
- 19. 代碼來計算assemby中的某個算術表達式
- 20. 將簡單計算器更改爲算術表達式
- 21. 計算組件86的算術表達式
- 22. 如何做這個計算來達到我想要的答案?
- 23. 算術和賦值運算符重載 - 返回值,範圍,結合表達式
- 24. 如何計算並返回值
- 25. 算術計算
- 26. 如何使用一元運算符輸出算術表達式?
- 27. 如何將值添加到單選按鈕並計算答案?
- 28. 如何計算gridview行並顯示答案到文本框
- 29. 計算器的問題,答案是動態回答
- 30. 如何計算按位運算返回
是possible.I想是不是possiblem – PSR 2013-04-25 11:52:02
我會說這是可能的,但它會涉及編碼 – Apurv 2013-04-25 11:54:40
您頗多」需要將該字符串編譯爲代碼。看[這] [1]。 [1]:http://stackoverflow.com/questions/935175/convert-string-to-code – 2013-04-25 11:55:17