【问题标题】:Android CharSequence Number Detection(0-9) in one statement without using if elseAndroid CharSequence Number Detection(0-9) in one statement without using if else
【发布时间】:2013-10-09 20:17:09
【问题描述】:

我是 android 新手,正在尝试制作计算器...

现在我已经在 charSequence 变量中提取了整个表达式。

例如 30+69-(3-10)

现在我需要检测 charSequence 变量的第一个字符是数字 (0-9) 还是字符/运算符。

我可以使用 get.subSequence(0,1) 但不想将它与每个数字进行比较来决定它是否是一个数字,如果它是一个数字那么它是哪一个......

如何使用更少的条件将其与每个数字进行比较,并提取该特定数字....

【问题讨论】:

  • 这是一个真正的问题还是试图过早优化?
  • 呵呵。我有strtd学习android。我已经在 c++ b4 上完成了编程。没有优化..只是想了解基础

标签: java android charsequence


【解决方案1】:

你可以使用:

Character.isDigit(someChar)

这会告诉你一个字符是否是一个数字。

如果不是,你可以假设它是一个操作符,并把它当作一个操作符来对待。

所以实现可能如下所示:

CharSequence chars = "1+2-3";

for(int i = 0; i < chars.length(); i++ ) {
    if (Character.isDigit(chars.charAt(i))) {
        //is digit
    } else {
        //is operator
    }
}

*我没有可用的 java 编译器,所以我不能保证目前可以使用。

【讨论】:

  • 我使用 'charSequence' 类型的变量而不是字符类型来存储表达式....此函数在 charSequence 类中不可用...
  • isDigit 是 Character 类的静态函数。您可以将任何字符传递给它 - 例如从 CharSequence.charAt(0) 返回的字符。
  • 如果数字是两位数怎么办?循环运行效率高吗?
  • 即使是两位数,你仍然知道它是一个数字。因此,如果您专注于消除运算符或非数字,您将只剩下可以在以后轻松评估的数字。这取决于你怎么写。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多