如何在文本中输入十进制数
Posted
技术标签:
【中文标题】如何在文本中输入十进制数【英文标题】:How to input a decimal number in a textEdit 【发布时间】:2022-01-24 02:54:49 【问题描述】:我有一个输入类型为 numberDecimal
的 TextEdit,我用输入的数字执行了一些代码
当我输入一个整数时,它可以正常工作,但是当我输入一个带小数点的数字时,应用程序会完全重新启动
那么我如何使它与十进制数一起工作?
如果您最终帮助我,请提前感谢您
KT 文件
class f_to_c : AppCompatActivity()
override fun onCreate(savedInstanceState: Bundle?)
super.onCreate(savedInstanceState)
setContentView(R.layout.f_to_c)
val actionBar = supportActionBar
val calculate = findViewById<Button>(R.id.calculate)
val tempEntered = findViewById<TextView>(R.id.tempEntered)
val result = findViewById<TextView>(R.id.result)
val temp = findViewById<EditText>(R.id.temp)
if (actionBar != null)
actionBar.title = "Fahrenheit To Celsius"
actionBar.setDisplayHomeAsUpEnabled(true)
calculate.setOnClickListener
var x = Integer.parseInt(temp.getText().toString()).toString().toInt()
tempEntered.text = x.toDouble().toString()
result.text = ((x-32).toFloat()*5/9).toString()
【问题讨论】:
【参考方案1】:如果你想处理十进制数字,你不应该使用Integer.parseInt
。这将在“1.23”之类的内容上引发错误。以下应该可以工作(或者你可以使用Double.parseDouble
)
val x = temp.getText().toString().toDoubleOrNull() ?: 0.0
tempEntered.text = x.toString()
result.text = ((x-32.0)*5.0/9.0).toString()
如果用户输入“1..3”等无效数字,您可能希望以不同的方式处理 null 情况,但在这种情况下默认为 0,而不是抛出。
此外,如果要在国际范围内使用,您应该考虑到某些语言环境使用逗号作为小数分隔符(“1,23”) - 这将在此处中断。您可以为此使用locale-aware number parser,或者在转换之前将逗号替换为句点。
val xs = temp.getText().toString().replace(",",".")
val x = xs.toDoubleOrNull() ?: 0.0
【讨论】:
以上是关于如何在文本中输入十进制数的主要内容,如果未能解决你的问题,请参考以下文章