Advertisement
Imran2544

Calculator (Java)

Oct 31st, 2020
2,028
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.31 KB | None | 0 0
  1. /*
  2. Inside build.gradle -> implementation
  3. implementation 'com.faendir.rhino:rhino-android:1.5.2'
  4. */
  5.  
  6. package com.example.calculator;
  7.  
  8. import androidx.appcompat.app.AppCompatActivity;
  9.  
  10. import android.os.Bundle;
  11. import android.util.Log;
  12. import android.util.TypedValue;
  13. import android.view.View;
  14. import android.widget.Button;
  15. import android.widget.TextView;
  16.  
  17. import org.mozilla.javascript.Context;
  18. import org.mozilla.javascript.Scriptable;
  19.  
  20. public class MainActivity extends AppCompatActivity {
  21.  
  22.     Button btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btnAdd, btnSubtract, btnMultiply, btnDivision, btnMod, btnParenthesis, btnEqual, btnDot, btnClear, btnPecentage;
  23.  
  24.     TextView output, input;
  25.  
  26.     boolean startPar = false;
  27.  
  28.     @Override
  29.     protected void onCreate(Bundle savedInstanceState) {
  30.         super.onCreate(savedInstanceState);
  31.         setContentView(R.layout.activity_main);
  32.  
  33.         btn0 = findViewById(R.id.btn0);
  34.         btn1 = findViewById(R.id.btn1);
  35.         btn2 = findViewById(R.id.btn2);
  36.         btn3 = findViewById(R.id.btn3);
  37.         btn4 = findViewById(R.id.btn4);
  38.         btn5 = findViewById(R.id.btn5);
  39.         btn6 = findViewById(R.id.btn6);
  40.         btn7 = findViewById(R.id.btn7);
  41.         btn8 = findViewById(R.id.btn8);
  42.         btn9 = findViewById(R.id.btn9);
  43.         btnAdd = findViewById(R.id.btnAdd);
  44.         btnSubtract = findViewById(R.id.btnSubtract);
  45.         btnMultiply = findViewById(R.id.btnMultiply);
  46.         btnDivision = findViewById(R.id.btnDivision);
  47.         btnMod = findViewById(R.id.btnMod);
  48.         btnDot = findViewById(R.id.btnDot);
  49.         btnParenthesis = findViewById(R.id.btnParenthesis);
  50.         btnPecentage = findViewById(R.id.btnPercentage);
  51.         btnClear = findViewById(R.id.btnClear);
  52.         btnEqual = findViewById(R.id.btnEqual);
  53.  
  54.         input = findViewById(R.id.input);
  55.         output = findViewById(R.id.output);
  56.  
  57.  
  58.         btnClear.setOnClickListener(new View.OnClickListener() {
  59.             @Override
  60.             public void onClick(View v) {
  61.                 input.setText("");
  62.                 output.setText("");
  63.                 startPar = false;
  64.                 input.setTextSize(TypedValue.COMPLEX_UNIT_SP, 60);
  65.             }
  66.         });
  67.  
  68.         btn0.setOnClickListener(new View.OnClickListener() {
  69.             @Override
  70.             public void onClick(View v) {
  71.                 String text = input.getText().toString();
  72.                 input.setText(text+"0");
  73.             }
  74.         });
  75.  
  76.         btn1.setOnClickListener(new View.OnClickListener() {
  77.             @Override
  78.             public void onClick(View v) {
  79.                 String text = input.getText().toString();
  80.                 input.setText(text+"1");
  81.             }
  82.         });
  83.  
  84.         btn2.setOnClickListener(new View.OnClickListener() {
  85.             @Override
  86.             public void onClick(View v) {
  87.                 String text = input.getText().toString();
  88.                 input.setText(text+"2");
  89.             }
  90.         });
  91.  
  92.         btn3.setOnClickListener(new View.OnClickListener() {
  93.             @Override
  94.             public void onClick(View v) {
  95.                 String text = input.getText().toString();
  96.                 input.setText(text+"3");
  97.             }
  98.         });
  99.  
  100.         btn4.setOnClickListener(new View.OnClickListener() {
  101.             @Override
  102.             public void onClick(View v) {
  103.                 String text = input.getText().toString();
  104.                 input.setText(text+"4");
  105.             }
  106.         });
  107.  
  108.         btn5.setOnClickListener(new View.OnClickListener() {
  109.             @Override
  110.             public void onClick(View v) {
  111.                 String text = input.getText().toString();
  112.                 input.setText(text+"5");
  113.             }
  114.         });
  115.  
  116.         btn6.setOnClickListener(new View.OnClickListener() {
  117.             @Override
  118.             public void onClick(View v) {
  119.                 String text = input.getText().toString();
  120.                 input.setText(text+"6");
  121.             }
  122.         });
  123.  
  124.  
  125.         btn7.setOnClickListener(new View.OnClickListener() {
  126.             @Override
  127.             public void onClick(View v) {
  128.                 String text = input.getText().toString();
  129.                 input.setText(text+"7");
  130.             }
  131.         });
  132.  
  133.         btn8.setOnClickListener(new View.OnClickListener() {
  134.             @Override
  135.             public void onClick(View v) {
  136.                 String text = input.getText().toString();
  137.                 input.setText(text+"8");
  138.             }
  139.         });
  140.  
  141.         btn9.setOnClickListener(new View.OnClickListener() {
  142.             @Override
  143.             public void onClick(View v) {
  144.                 String text = input.getText().toString();
  145.                 input.setText(text+"9");
  146.             }
  147.         });
  148.  
  149.         btnAdd.setOnClickListener(new View.OnClickListener() {
  150.             @Override
  151.             public void onClick(View v) {
  152.                 String text = input.getText().toString();
  153.                 input.setText(text+"+");
  154.             }
  155.         });
  156.  
  157.         btnSubtract.setOnClickListener(new View.OnClickListener() {
  158.             @Override
  159.             public void onClick(View v) {
  160.                 String text = input.getText().toString();
  161.                 input.setText(text+"−");
  162.             }
  163.         });
  164.  
  165.         btnMultiply.setOnClickListener(new View.OnClickListener() {
  166.             @Override
  167.             public void onClick(View v) {
  168.                 String text = input.getText().toString();
  169.                 input.setText(text+"×");
  170.             }
  171.         });
  172.  
  173.         btnDivision.setOnClickListener(new View.OnClickListener() {
  174.             @Override
  175.             public void onClick(View v) {
  176.                 String text = input.getText().toString();
  177.                 input.setText(text+"÷");
  178.             }
  179.         });
  180.  
  181.         btnPecentage.setOnClickListener(new View.OnClickListener() {
  182.             @Override
  183.             public void onClick(View v) {
  184.                 String text = input.getText().toString();
  185.                 input.setText(text+"%");
  186.             }
  187.         });
  188.  
  189.         btnDot.setOnClickListener(new View.OnClickListener() {
  190.             @Override
  191.             public void onClick(View v) {
  192.                 String text = input.getText().toString();
  193.                 input.setText(text+".");
  194.             }
  195.         });
  196.  
  197.         btnMod.setOnClickListener(new View.OnClickListener() {
  198.             @Override
  199.             public void onClick(View v) {
  200.                 String text = input.getText().toString();
  201.                 input.setText(text+"Mod");
  202.             }
  203.         });
  204.  
  205.         btnParenthesis.setOnClickListener(new View.OnClickListener() {
  206.             @Override
  207.             public void onClick(View v) {
  208.                 String text = input.getText().toString();
  209.                 if (startPar)
  210.                     input.setText(text + ")");
  211.                 else
  212.                     input.setText(text+"(");
  213.  
  214.                 startPar = !startPar;
  215.             }
  216.         });
  217.  
  218.         btnEqual.setOnClickListener(new View.OnClickListener() {
  219.             @Override
  220.             public void onClick(View v) {
  221.                 String text = input.getText().toString();
  222.  
  223.                 if ("".equals(text)) {
  224.                     startPar = false;
  225.                     return;
  226.                 }
  227.  
  228.                 output.setText(text);
  229.  
  230.                 text = text.replaceAll("÷", "/");
  231.                 text = text.replaceAll("%", "/100");
  232.                 text = text.replaceAll("×", "*");
  233.                 text = text.replaceAll("−", "-");
  234.                 text = text.replaceAll("Mod", "%");
  235.  
  236.                 org.mozilla.javascript.Context rhino = Context.enter();
  237.  
  238.                 rhino.setOptimizationLevel(-1);
  239.  
  240.  
  241.                 String result = "";
  242.  
  243.                 try {
  244.                     Scriptable scriptable = rhino.initStandardObjects();
  245.                     result = rhino.evaluateString(scriptable, text, "javascript", 1, null).toString();
  246.                 }
  247.                 catch (Exception e) {
  248.                     result = "0";
  249.                 }
  250.  
  251.                 if (result.length() > 10) {
  252.                     input.setTextSize(TypedValue.COMPLEX_UNIT_SP, 37);
  253.                 }
  254.  
  255.                 input.setText(result);
  256.                 startPar = false;
  257.             }
  258.         });
  259.     }
  260. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement