2011-12-17 7 views
0

私はこのJavaコードを持っていますが、その中に電力、罪、余弦または他の関数を導入する方法はわかりません。私はそれをさまざまなウェブサイトを探しましたが、計算機への電力関数の導入

public class calculator extends Activity { 

private WebView mWebView; 
private StringBuilder mMathString; 
private ButtonClickListener mClickListener; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.calculator); 

    // Create the math string 
    mMathString = new StringBuilder(); 

    // Enable javascript for the view 
    mWebView = (WebView) findViewById(R.id.webview); 
    mWebView.getSettings().setJavaScriptEnabled(true); 

    // Set the listener for all the buttons 
    mClickListener = new ButtonClickListener(); 
    int idList[] = { R.id.button0, R.id.button1, R.id.button2, 
    R.id.button3, R.id.button4, R.id.button5, R.id.button6, 
    R.id.button7, R.id.button8, R.id.button9, R.id.buttonLeftParen, 
    R.id.buttonRightParen, R.id.buttonPlus, R.id.buttonPlus, 
    R.id.buttonMinus, R.id.buttonDivide, R.id.buttonTimes, 
    R.id.buttonDecimal, R.id.buttonBackspace, R.id.buttonClear, R.id.buttonPow }; 

    for(int id : idList) { 
    View v = findViewById(id); 
    v.setOnClickListener(mClickListener); 
    } 

} 

private void updateWebView() { 

    StringBuilder builder = new StringBuilder(); 

    builder.append("<html><body>"); 
    builder.append("<script type=\"text/javascript\">document.write('"); 
    builder.append(mMathString.toString()); 
    builder.append("');"); 
    builder.append("document.write('<br />=' + eval(\""); 
    builder.append(mMathString.toString()); 
    builder.append("\"));</script>"); 
    builder.append("</body></html>"); 

    mWebView.loadData(builder.toString(), "application/xhtml", "UTF-8"); 
} 

private class ButtonClickListener implements OnClickListener { 

    @Override 
    public void onClick(View v) { 
    switch (v.getId()) { 
    case R.id.buttonBackspace: 
    if(mMathString.length() > 0) 
    mMathString.deleteCharAt(mMathString.length()-1); 
    break; 
    case R.id.buttonClear: 
    if(mMathString.length() > 0) 
    mMathString.delete(0, mMathString.length()); 
    break; 
    default: 
    mMathString.append(((Button) v).getText()); 
    } 

    updateWebView(); 
    } 

} 

} 

それを見つけること運が誰かは、電力機能を導入する方法を言うことができませんでしたか?

+2

Java、JavaScriptではない – Jon

+0

javascriptが 'updateWebView'メソッドに含まれています。 – Dalmas

+0

「このプログラムはどのように機能しますか?」良いスタックオーバーフローの質問ではありません。あなたは理解していない**特定の**部分に焦点を当てるべきです。 –

答えて

0

HTMLページには、eval("your math expression")がeval内に入力された数学的表現を含み、そのeval行は実際に数学的評価をしているものであり、実際に数学を行うためにJavaではなくJavaScriptを使用しています。

http://javascriptsource.com/math-related/5-function.htmlには、javascriptのeval関数を使用して力を与える例があります。アプリで生成されたjavascriptを修正して、そのように力を評価する必要があります。

+0

これは私が欲しかったものです。うまくいけば、私はそれを行うことができるようになります。ありがとう –

+0

ちょうど私がJavaScriptを変更する必要がありますか?私は必要な機能を追加することができるJavaScriptを見つけることができません –

+0

あなたはジャバスクリプトの電源機能の演算子は何ですか?私は他人の負荷を見つけましたが、この1つではありません... –

0

APIを使用するには、Java Math APIが必要です。このtutorialをご覧ください。

1

おそらく、JavaのMath packageを参照してください。それはあなたが探しているものを含む数学関数の多くを持っています。インポートがまだ存在しない場合は、Math関数を使用するファイルの先頭にimport java.lang.Math;のインポートを追加する必要があります。例えば、double answer = Math.pow(firstnum,secondnum);は、1つの数値を別の数値の累乗にする関数であり、double answer = Math.sin(anum)は、変数anumの値のsinを与える関数などである。

そのクラスのjavadocを読んで、残りの「科学的な」電卓機能を提供する必要がある追加機能が表示されます。

整数と倍数には記憶容量に制限があることに注意してください。誰かが100,000〜100,000,000のような何かをすることを決めると、オーバーフローを処理する方法を検討したいかもしれません。本当に大きな数字の精度が十分にある場合は、BigDecimalまたはBigIntegerなどのクラスを調べることもできます。

0

Javaには、これらの関数が静的メソッドとしてjava.lang.Mathクラスに組み込まれています。 Math.sqrt(double)

double shortSide1 = 4.0d; 
double shortSide2 = 3.0d; 
double longSide = Math.sqrt(shortSide1 * shortSide1 + shortSide2 * shortSide2); 
// All credits goto Pythagoras. 

罪、COSを使用してMath.pow(double, double)

double number = 3.42d; 
double exponent = 5.14d; 
double power = Math.pow(number, exponent); 

平方根を使用して

パワー、、、日焼け


あなたは、このようにそれらをCALすることができます
double angle = 2.13d; 
double sin = Math.sin(angle); 
double cos = Math.cos(angle); 
double tan = Math.tan(angle); 

逆正弦、ARCCOSは、

double value = 0.13d; 
double asin = Math.asin(value); 
double acos = Math.acos(value); 
double atan = Math.atan(value); 

ARCTANすべてのこれらの機能は、彼らがあなたのプラットフォーム上で、可能な限り良いを実行することを意味し、ネイティブ(Javaで書かれていない)、です。あなたが見ているコードではJavaScriptの束を出力しますこと...

をそのコードは、Javaの数学のパッケージを使用せずに、数学関数を計算しない方法です私はあなたが本当に知りたいと思っていると思うの質問に、答えるために

+0

私はちょうど迷ってしまった。このコードはhttp://www.androiddom.com/2011/04/creating-android-calculator-tutorial.htmlにあります。それは実際には機能しますが、どこで計算を行うのか分かりません。 –

+0

あなたがリンクしている電卓ははるかに複雑です。式を評価して解決します。私はまず、一度に1つの操作を実行する単純な電卓を作成しようとします。例: '5 * 3'、' sin(2) '。 –

+0

実際にどの部分で実際に計算されていると言うことができますか?私がそれを理解し、何かを変更または追加しようとすることができるとき –

関連する問題