2016-02-12 39 views
1

所以我一直在爲一個學校項目編寫一個使用Java的科學計算器,並且我在這裏陷入了兩件事。多參數函數加上java中的科學計算器的高級文本顯示

  • 添加功能,如sincostanroot(base,n)等有了這個,我被困在道路分隔參數。例如,root(base,n)。我可以弄清楚如何自己讀取公式,我使用Shunting Yard算法將公式轉換爲RPN。我一直在遵循this僞碼算法來實現它。我只是不知道如何讓用戶只使用屏幕上的GUI添加兩個參數。

  • 實施高級顯示。因此,我的意思是一個顯示不僅包含一行文本,還包含多行,如degrees/radians mode,上一個公式和答案,以及當前的公式/答案。如果我的解釋不好,這可能有助於說明我的觀點:enter image description here 目前我的顯示器使用了一個簡單的JTextField,並且我意識到了它對我想要做的事情的限制,而且我肯定需要對其進行更改。 JTextField是一種臨時顯示輸出的方式,直到我正確地進行顯示。

我的計算器GUI目前看起來是這樣的:enter image description here

它主要有兩個字符串,一個是被評估的一個,另一個就是顯示在屏幕上,用統一碼等,可以不會被評估在一個公式(因此,功率兩個符號和x代替星號)

對於第一個問題,我認爲左箭頭和右箭頭應該在arg1,arg2等之間移動但我不知道我會如何實現這一點。

任何這些問題的幫助將不勝感激。我一直試圖解決這個問題,現在幾個小時...

謝謝。

回答

1

鑑於根(base,n)= base ^(1/n),輸入邏輯可能類似。我建議當用戶點擊n根按鈕時,會打開一個左括號,並且顯示(或狀態欄)表示他們必須輸入底座。當他們用右括號關閉時,他們然後輸入n。

對於高級顯示我不太確定,也許是一個JFormattedTextField?

+0

所以它看起來像'root(base)n'? – Kelan

+0

是的,似乎是最簡單的方法去做。你還試過了什麼?進入n之後,顯示屏可以更新以反映它作爲(表達式的)n根( –

+0

)我還沒有嘗試過太多...我真的不知道從哪裏開始。我的想法是像'root(arg1,arg2)'一樣格式化(如字符串「arg1」替換爲'base',字符串arg2'替換爲'n'),但我不知道如何做這個。 – Kelan