有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java幂函数在计算器中的应用

我有这个Java代码,但我不知道如何在其中引入power、sin、cos或其他函数。我在不同的网站上找过,但没找到

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();
  }

 }

}

有人能说说如何引入幂函数吗


共 (4) 个答案

  1. # 1 楼答案

    Java在java.lang.Math类中内置了这些函数作为静态方法
    您可以这样校准它们:

    电源,使用Math.pow(double, double)

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

    平方根,使用Math.sqrt(double)

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

    Sin,cos,tan

    double angle = 2.13d;
    double sin = Math.sin(angle);
    double cos = Math.cos(angle);
    double tan = Math.tan(angle);
    

    Arcin、arccos、arctan

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

    所有这些函数都是本机函数(不是用Java编写的),这意味着它们将在您的平台上尽可能好地执行

  2. # 2 楼答案

    您需要使用java MathAPI。看看这个tutorial

  3. # 3 楼答案

    为了回答这个问题,我想你真的很想知道,这段代码在不使用Java的数学包的情况下是如何计算数学函数的

    您正在查看的代码将一组javascript打印到HTML页面,包括eval("your math expression")和eval中输入的数学表达式,而eval行实际上是在进行数学计算,它是使用javascript而不是Java进行计算的

    http://javascriptsource.com/math-related/5-function.html有一个使用javascript的eval函数执行powers的示例。。。您必须修改应用程序生成的javascript,以便以这种方式评估能力

  4. # 4 楼答案

    您可能想看看Java的Math package。它有很多数学函数,包括你正在寻找的函数。如果导入尚未存在,则可能需要在使用数学函数的文件开头添加import java.lang.Math;导入

    例如,double answer = Math.pow(firstnum,secondnum);是将一个数字提升为另一个数字的幂的函数,或者double answer = Math.sin(anum)是给出变量anum中某个值的sin的函数,依此类推

    当您阅读该类的javadoc时,您将看到其他函数,这些函数应该提供您想要的其余“科学”计算器功能

    记住整数和双倍对它们的存储容量有限制,所以如果有人决定做一些疯狂的事情,比如100000 ^ 100000000,你可能想考虑如何处理溢出。如果对非常大的数字有足够的精度对您来说很重要,那么您可能还需要研究诸如BigDecimalBigInteger之类的类