decimalFormat.format()错误
decimalFormat声明如下所示:
private var decimalFormat: DecimalFormat? = null decimalFormat = DecimalFormat("#.##########")
要传递给format()方法的值是:
private var valueOne= java.lang.Double.NaN private var valueTwo: Double = 0.toDouble()
我试图做一个计算器的应用程序,当我将valueOne传递给format()方法时,我得到的错误是在运算符按钮中:
binding!!.buttonAdd.setOnClickListener { computeCalculation() CURRENT_ACTION = ADDITION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "+") binding!!.editText.setText(null) } binding!!.buttonSubtract.setOnClickListener { computeCalculation() CURRENT_ACTION = SUBTRACTION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "-") binding!!.editText.setText(null) } binding!!.buttonMultiply.setOnClickListener { computeCalculation() CURRENT_ACTION = MULTIPLICATION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "*") binding!!.editText.setText(null) } binding!!.buttonDivide.setOnClickListener { computeCalculation() CURRENT_ACTION = DIVISION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "/") binding!!.editText.setText(null) } binding!!.buttonEqual.setOnClickListener { computeCalculation() binding!!.infoTextView.text = binding!!.infoTextView.text.toString() + decimalFormat.format(valueTwo) + " = " + decimalFormat.format(valueOne) valueOne = java.lang.Double.NaN CURRENT_ACTION = '0' }
我得到的错误是:
None of the following functions can be called with the arguments supplied: public final fun format(obj: Any!): String! defined in java.text.DecimalFormat public final fun format(number: Double): String! defined in java.text.DecimalFormat public final fun format(number: Long): String! defined in java.text.DecimalFormat
onCreate()方法的完整代码如下所示:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = DataBindingUtil.setContentView<ActivityMainBinding>(this, R.layout.activity_main) decimalFormat = DecimalFormat("#.##########") binding?.buttonDot?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + ".") } binding?.buttonZero?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "0") } binding?.buttonOne?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "1") } binding?.buttonTwo?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "2") } binding?.buttonThree?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "3") } binding?.buttonFour?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "4") } binding?.buttonFive?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "5") } binding?.buttonSix?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "6") } binding?.buttonSeven?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "7") } binding?.buttonEight?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "8") } binding?.buttonNine?.setOnClickListener { binding?.editText?.setText((binding as ActivityMainBinding).editText.text.toString() + "9") } binding!!.buttonAdd.setOnClickListener { computeCalculation() CURRENT_ACTION = ADDITION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "+") binding!!.editText.setText(null) } binding!!.buttonSubtract.setOnClickListener { computeCalculation() CURRENT_ACTION = SUBTRACTION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "-") binding!!.editText.setText(null) } binding!!.buttonMultiply.setOnClickListener { computeCalculation() CURRENT_ACTION = MULTIPLICATION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "*") binding!!.editText.setText(null) } binding!!.buttonDivide.setOnClickListener { computeCalculation() CURRENT_ACTION = DIVISION binding!!.infoTextView.setText(decimalFormat.format(valueOne) + "/") binding!!.editText.setText(null) } binding!!.buttonEqual.setOnClickListener { computeCalculation() binding!!.infoTextView.text = binding!!.infoTextView.text.toString() + decimalFormat.format(valueTwo) + " = " + decimalFormat.format(valueOne) valueOne = java.lang.Double.NaN CURRENT_ACTION = '0' } binding!!.buttonClear.setOnClickListener { if (binding!!.editText.text.length > 0) { val currentText = binding!!.editText.text binding!!.editText.setText(currentText.subSequence(0, currentText.length - 1)) } else { valueOne = java.lang.Double.NaN valueTwo = java.lang.Double.NaN binding!!.editText.setText("") binding!!.infoTextView.text = "" } } }
请帮我解决这个错误。
请参阅DecimalFormat doc这里DecimalFormat文档
你对这个类的使用是错误的,错误信息是清楚的。 方法格式(obj:Any!)格式(数字:双)格式(数字:长)未定义。
你应该使用格式(double数字,StringBuffer结果,FieldPosition fieldPosition)
- Kotlin,proguard,Android架构组件
- onCreate在抽象的父活动no kotlin中调用
- Kotlin kotlinClass.class.getName()不能返回包名,而只能返回简单的类名
- 如何使用kotlin数据类获取Firestore文档的文档ID
- 使用Espresso的Android仪器测试失败:NoSuchMethodError javax.inject.Provider中的get()
- Android Studio 3 Kotlin版本
- 最佳和节省时间的方式编码在android studio
- 我怎样才能改变ColorPrimaryDark只是一个活动?
- 如何在android中获得当前年份?