Advertisement
Guest User

Untitled

a guest
Oct 18th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. package com.appypie.testapp
  2.  
  3. import androidx.core.text.isDigitsOnly
  4. import com.appypie.VARIABLE_TYPE
  5. import java.util.*
  6. import kotlin.collections.ArrayList
  7.  
  8. class FormulaUtil {
  9. var operatorArr = arrayOf("+" , "-" , "/" , "%" , "*")
  10. var functionArr = arrayOf("UPPER","LOWER","CONCATENATE","SQRT","AVERAGE",
  11. "DISTANCE","POWER","ABS","MAX","MIN","AVERAGE","COUNT","ROUND",
  12. "STDEVP","FLOOR","CEILING","NUMBER","DECIMAL","SUM")
  13.  
  14. companion object{
  15. fun getStackTokenArr(str:String):ArrayList<String>{
  16. var stackArr:ArrayList<String> = arrayListOf<String>()
  17. var getVal:String= ""
  18. var breakExpressions ="(,)"
  19. str.forEachIndexed { index, charData ->
  20. if(charData != null && breakExpressions.contains(charData)){
  21. stackArr.add(getVal)
  22. stackArr.add(charData.toString())
  23. getVal = ""
  24. }else{
  25. getVal = "${getVal}${charData}"
  26. }
  27. }
  28. stackArr.add(getVal)
  29. return stackArr
  30. }
  31.  
  32. fun calculateValueStack(expStr:String){
  33. var ops = Stack<String>()
  34. var vals = Stack<Double>()
  35. var stackTokenArr:ArrayList<String> = getStackTokenArr(expStr)
  36. stackTokenArr.forEachIndexed { index, stringData ->
  37. var data = checkVariableType(stringData)
  38. print()
  39. }
  40. }
  41.  
  42. //Function To Get Type Of Variables in Operator Operand Stack
  43. fun checkVariableType(variable:String) : VARIABLE_TYPE {
  44. if(functionArr.any{ it == variable}){
  45. return VARIABLE_TYPE.FUNCTION
  46. }else if(operatorArr.any{ it == variable}){
  47. return VARIABLE_TYPE.OPERATOR
  48. }else if(variable.contains("[") && variable.contains("]")){
  49. return VARIABLE_TYPE.COLOUM_VALUE
  50. }else if(variable.equals("(")){
  51. return VARIABLE_TYPE.START_BRACKET
  52. }else if(variable.equals(")")){
  53. return VARIABLE_TYPE.POP_TO_EVALUATE
  54. }else if(variable.isDigitsOnly()){
  55. return VARIABLE_TYPE.CONSTANT
  56. }
  57. return VARIABLE_TYPE.IGNORE
  58. }
  59. }
  60.  
  61.  
  62.  
  63.  
  64.  
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement